我试图写一个基本的机器人,但似乎机器人不想加载我的轮齿,其中只包含一个简单的命令test
。
当我尝试在机器人的DM和机器人加入的服务器中调用该命令时,没有任何React。
(discord) ~/source/bot » python main.py
2022-12-16 14:46:47 INFO discord.client logging in using static token
2022-12-16 14:46:49 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: XXX).
2022-12-16 14:46:51 INFO root Bot is ready
2022-12-16 14:46:51 INFO root Setup function called <-- cog seems to be loaded, but it's not
2022-12-16 14:46:56 INFO root Message received: %test <-- when i sent the command via bot's DM
main.py
intents = discord.Intents.all()
TOKEN = "XXX"
bot = commands.Bot(command_prefix="%", intents=intents)
logger = logging.StreamHandler(stream=sys.stdout)
@bot.event
async def on_ready():
logging.info("Bot is ready")
await bot.load_extension("mycog")
@bot.event
async def on_message(ctx):
logging.info("Message received: %s", ctx.content)
async def main():
utils.setup_logging(handler=logger)
await bot.start(token=TOKEN)
asyncio.run(main())
mycog.py
class MyCog(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
self.count = 0
@commands.command(name="test")
async def test(self, ctx):
# It should log when called, but this isn't the case at the moment
logging.info("Test function called")
await ctx.send("Pong!")
async def setup(bot: commands.Bot):
await bot.add_cog(MyCog(bot))
logging.info("Setup function called")
我还尝试将bot.load_extension
调用放在bot.start
之前的main
中,但也没有成功。
1条答案
按热度按时间enyaitl31#
cog已经加载,但是它没有响应的原因是因为您覆盖了默认的
on_message
事件,所以bot不会处理这些命令。你可以简单地用
bot.listen
代替bot.event
来解决这个问题,这样它就不会覆盖默认值。或者使用
bot.process_commands
让机器人处理这些命令。您可以从www.example.com查看此常见问题解答discord.py以了解更多信息。