Попытка получить все сообщения в определенном канале, созданном в другой команде

В настоящее время я кодирую бота, который позволит двум людям играть в шахматы глобально, на сервере, с одной учетной записи или против бота. В настоящее время мой метод для этого включает в себя алгоритм подбора игроков (это не самый сложный), затем он создает канал для сообщений игроков или два канала с веб-перехватчиками на разных серверах в случае глобальной игры. Мой вопрос: как мне запускать код всякий раз, когда сообщение отправляется по одному из этих каналов? В частности, мне нужно отправить копию каждого сообщения, отправленного в одном канале, в другой через веб-перехватчик в глобальной игре, чтобы оба игрока могли общаться, а также проверять, соответствует ли входное сообщение формату хода, и в этом случае бот сделает ход, а также скопирует сообщение на другой канал. Я подумал об использовании

@bot.event
async def on_message(mes)

но я не могу сделать это глобально, так как каналы для проверки сообщений не будут известны в глобальной области, и я не знаю, можно ли это определить внутри функции таким образом, чтобы проверить канал. Спасибо!

я не знаком с интернет-стороной python, но может ли пользователь отправить сообщение промежуточному звену, который отправляет его всем людям на канале?

joshua robbins 10.12.2020 11:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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...

Невозможно быть более конкретным без фрагмента кода того, что у вас есть на данный момент.

Другие вопросы по теме