#python #python-3.x #discord.py #discord.py-rewrite
#python #python-3.x #discord.py #discord.py-переписать
Вопрос:
В настоящее время я кодирую бота, который позволит двум людям играть в шахматы глобально, на сервере, с одной учетной записью или против бота. В настоящее время мой метод для этого включает в себя алгоритм подбора партнеров (который не самый сложный), затем он создает канал для игроков для отправки сообщений или два канала с веб-ссылками на разных серверах в случае глобальной игры. Мой вопрос: как мне выполнять код всякий раз, когда сообщение отправляется по одному из этих каналов? В частности, мне нужно отправить копию каждого сообщения, отправленного по одному каналу, другому через веб-хук в глобальной игре, чтобы оба игрока могли общаться, а также проверять, находится ли входное сообщение в формате хода, и в этом случае бот сделает ход, а также скопирует сообщение.сообщение на другой канал. Я думал об использовании
@bot.event
async def on_message(mes)
но я не могу сделать это глобально, поскольку каналы для проверки сообщений не будут известны в глобальной области, и я не знаю, можно ли это определить в функции таким образом, чтобы можно было проверять канал. Спасибо!
Комментарии:
1. я не знаком с интернет-частью python, но возможно ли, чтобы пользователь отправил сообщение промежуточному, который отправляет его всем людям на канале?
Ответ №1:
@bot.event
async def on_message(message):
if message.channel.id in my_list_of_channel_ids:
# It's a chess channel
# Now you can check if the message contains a valid move
или вы можете использовать bot.wait_for
# The `is_game_over` var indicates if the game is over
while not is_game_over:
def check(message):
"""Checks if the message contains a valid move,
you should also check if `message.author == `ctx.author`
if you're doing this in a command
and if message.channel is the same as the channel you created before"""
return message.content.upper() in ['A1', 'A2', 'A3'] # Put all the valid moves here
message = await bot.wait_for('message', check=check)
# from here do your thing, add the moves, check if someone won the game, etc...
Не могу быть более конкретным без фрагмента кода того, что у вас есть в данный момент