Disxord.py 上的非前缀消息

@client.event

async def on_message(message,channel):

    if message.content.startswith("sa"):

        await channel.send(message.channel, "as")


    await client.process_commands(message)

这段代码应该as在我说的时候说sa。它检测到这个词,但没有响应。这是我得到的错误:


Ignoring exception in on_message

Traceback (most recent call last):

  File "C:\Users\---\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\client.py", line 312, in _run_event

    await coro(*args, **kwargs)

TypeError: on_message() missing 1 required positional argument: 'channel'

我在想这可能是一个过时的代码,所以我试图尽可能地改变它,但我收到了那个错误。


 @client.event

 async def on_message(message):

     if message.content.startswith('sa'):

         await message.channel.send('as')

     await client.process_commands(message)


当年话下
浏览 52回答 1
1回答

翻过高山走不出你

我不知道你从哪里得到代码,但我在 2018 年做的一个旧项目使用了这个函数签名:client = discord.Client()@client.eventasync def on_message(message):    if message.content.startswith("sa"):        await client.send_message(message.channel, "as")但是,从那以后,discord.py 似乎已经迁移到新版本了。这是快速入门文档中的新方法:@client.eventasync def on_message(message):    if message.author == client.user:        return    if message.content.startswith('$hello'):        await message.channel.send('Hello!')所以你想要的可能是最后几部分:@client.eventasync def on_message(message):    if message.content.startswith('sa'):        await message.channel.send('as')编辑看起来您的代码也有process_commands错误的部分。process_commands是一种方法discord.ext.commands.Bot,不是client。所以它应该是bot.process_commands(message)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python