Как заставить бота Discord отвечать на новые сообщения на форуме?

Я использую discord.py и хочу создать бота, который может следить за форумом и отвечать на новые сообщения в режиме реального времени. В частности, я хочу, чтобы бот ответил сообщением типа «Здравствуйте, {author.mention}, пожалуйста, оставайтесь в этой теме и не делайте дубликатов. Спасибо!» когда пользователь создает новый пост.

Я изучил Discord API, но не знаю, как его реализовать. Я также не уверен, как настроить мониторинг новых сообщений в реальном времени.

Буду очень признателен за любые предложения или фрагменты кода. Спасибо!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
236
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как проверить, является ли сообщение цепочкой

В discord.py вы можете использовать .type для возвращаемого типа message.channel, чтобы получить его тип.

Пример:

@bot.event
async def on_message(message):
    if message.channel.type == "public_thread":
        await message.channel.send(message.author.mention)
        # mentions the author every time a message is sent in a public thread

Вы, вероятно, не хотите отправлять по одному для каждого сообщения

Таким образом, вы можете сохранить его локально. Сохраните идентификатор канала в файле JSON и выполните еще одну проверку.

Ресурсы

Ответ принят как подходящий

Хорошо, я нашел ответ на проблему. Кажется, в discord.py есть событие on_thread_create, которое позволяет вам делать что угодно после создания темы. Реализация кода:

@client.event
async def on_thread_create(thread):
    # check if the thread is in the desired channel
    if thread.parent.name == "my-forum":
        # send a message to the thread
        reply = f"Hello {thread.owner.mention}, please stay in this thread(Don't ping people in <@968504682387492885>) and do not make duplicates. If no one responds to your thread within 1hr, ping `WSC Tech Supporter` Thanks!"
        await thread.send(reply)

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