1. ホーム
  2. python-3.x

[解決済み] discordのボットコマンドとイベントの両方を使うには?

2022-03-12 19:12:40

質問

サーバーに書き込まれたメッセージを聞きながら、同時にコマンドを受け付けるボットを作りたいのですが、どうすればいいですか?

# Create the Discord client
client = discord.Client()
client = commands.Bot(command_prefix = '!')
client.remove_command('help')

@client.event
async def on_ready():
    print('ready')


@client.event                                               #ricerca messaggi 
async def on_message(message):
    # Ignore messages made by the bot
    if(message.author == client.user):
        return
    a = ''
    a += message.embeds[0]["description"]
    if a == 'abcdef':
        print(' aaaaa ')



@client.command()
async def hello():
    await client.say('hello')


client.run('token')

どうすれば動くようになるのでしょうか? 問題は、ボットが最初のイベントで循環し続けることだと思うのですが・・。 sub_processについて読みましたが、使い方がよくわかりません。

解決方法は?

on_messageの末尾にprocess_commands()を追加する必要があります。 これは、デフォルトのon_messageを上書きすると、コマンドの実行が禁止されるためです。 .

@client.event                                               #ricerca messaggi 
async def on_message(message):
    # Ignore messages made by the bot
    if(message.author == client.user):
        return
    a = ''
    a += message.embeds[0]["description"]
    if a == 'abcdef':
        await message.channel.send(' aaaaa ')
    await client.process_commands(message)