#python #discord.py
#python #discord.py
Вопрос:
итак, я создаю 2 бота discord: один будет прослушивать команды, и когда он получит их, он отправит сообщение по частному каналу. когда первый бот отправляет сообщение по этому каналу, второй ответит, указав, что он подключен, затем бот 1 запрашивает запуск сервера Minecraft. проблема в том, что бот 2 отвечает только один раз, и если я хочу, чтобы он отвечал более одного раза, мне нужно вручную перезапустить код. я на python 3.8.6
import discord
client = discord.Client()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.author.id == bot 1 id:
if message.content.startswith('<@!bot 2 id>'):
starterChannel = client.get_channel('private channel')
channel = message.channel
if channel == starterChannel:
await channel.send('ye')
@client.event
async def on_message(message):
if message.content.startswith('Can'):
message = message.content
request = message[8:]
print(request)
if request.startswith('start'):
await channel.send('idk how')
в чем проблема и как я могу ее исправить?
Ответ №1:
Я считаю (но не могу проверить, так как у меня нет бота discord для тестирования), что вы не можете переопределить on_message внутри себя и обновить обработчик on_message клиента. Вместо этого вы можете попробовать следующее, которое не объявляет новую функцию on_message:
import discord
client = discord.Client()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.author.id == bot 1 id:
if message.content.startswith('<@!bot 2 id>'):
starterChannel = client.get_channel('private channel')
channel = message.channel
if channel == starterChannel:
await channel.send('ye')
if message.content.startswith('Can'):
channel = message.channel
message = message.content
request = message[8:]
print(request)
if request.startswith('start'):
await channel.send('idk how')
Комментарии:
1. Я создал эту учетную запись, чтобы задать этот вопрос, чтобы он не показывал мой голос, но это сработало, спасибо!
Ответ №2:
Вам нужно поставить await client.process_commands(message)
в конце
Комментарии:
1. Спасибо, но ответ thshea сработал для меня
2. @linkthehero1234 пожалуйста, отметьте ответ thshea как принятый, тогда