开发Discord Slash命令Bot运行时出现未关闭会话错误,求排查
问题原因及解决方案
核心问题:未启动Bot运行循环
你的代码仅完成了Bot客户端的初始化,但没有启动Discord Bot的核心运行循环。程序执行完初始化代码后直接退出,导致aiohttp的客户端会话和连接器未能正常关闭,从而出现Unclosed client session这类提示。
解决方法:在代码末尾添加启动语句:
bot.start()
如果需要更规范的异步管理,也可以使用asyncio:
import asyncio asyncio.run(bot.start())
其他潜在问题
命令函数名重复:所有Slash命令的处理函数都使用
my_first_command这一名称,会导致后续函数覆盖前面的定义,最终只有最后一个Printout命令能正常响应。每个命令需对应唯一的函数名,例如:@bot.command( name="Action", description="Number between one and nine", scope=GUILDID, ) async def action_command(ctx: interactions.CommandContext): await ctx.send("Hi there!")未定义GUILDID变量:代码中的
GUILDID未赋值,需替换为实际的服务器ID(整数类型),比如:GUILDID = 123456789012345678 # 替换成你的目标服务器ID若要让命令全局生效,可直接移除
scope参数(注意全局命令需要约1小时同步到所有服务器)。
内容的提问来源于stack exchange,提问作者plerpsandplerps
相关产品推荐
相关产品推荐

