Python开发Discord机器人报event()缺失coro参数错误无法启动求助
报错根因
bot.event属于不需要传参的装饰器,直接使用即可不需要加括号执行,你代码中@bot.event()的多余括号是触发本次报错的直接原因:装饰器执行时会要求传入协程对象作为参数,你没有传入就抛出了参数缺失的错误。- 额外的潜在问题:
on_message事件回调必须接收message参数用来承载触发事件的消息实例,你当前的函数定义没有声明该参数,修复装饰器问题后依然会触发参数不匹配错误。如果你的代码后续需要响应!开头的命令,还需要在on_message逻辑末尾加await bot.process_commands(message),否则注册的命令会全部失效。 - 新版本discord.py要求显式声明intents权限,否则很多事件无法正常触发,建议初始化Bot时补充intents配置避免后续出现无报错但功能不生效的问题。
修复后完整代码
# -*- coding: utf-8 -*- import discord from discord.ext import commands from config import token import youtube_dl import os # 显式声明intents权限,也可以根据需求按需开启对应权限,不用全开 bot = commands.Bot(command_prefix='!', intents=discord.Intents.all()) @bot.event async def on_ready(): print('bot online!') @bot.event # 去掉多余的括号 async def on_message(message): # 补充必填的message参数 print('New Message!') # 保留命令响应能力,不需要响应命令可以删掉这行 await bot.process_commands(message) bot.run(token)
内容的提问来源于stack exchange,提问作者Zumich
相关产品推荐
相关产品推荐

