Pycord开发Discord机器人触发应用命令上限问题求助
Pycord开发Discord机器人触发应用命令上限问题求助
兄弟,你踩的这个坑我当初用Pycord开发的时候也碰到过!先给你把原因说透:
你猜的没错,每次重启机器人就调用命令同步(sync)正是触发每日上限的罪魁祸首。Discord对全局应用命令的同步请求有每日额度限制——不管你只有5个还是50个命令,每调用一次全局同步就算消耗一次额度,频繁重启+自动同步,很快就把额度耗光了。
接下来给你几个实用的解决办法,保证你开发时再也不会碰到这个问题:
优先用服务器级同步代替全局同步
开发阶段完全没必要用全局同步,只在你自己的测试服务器同步就行。Discord对服务器(guild)级别的同步限制非常宽松,几乎不会触发上限。在Pycord里你可以指定服务器ID来同步:# 启动时只同步到你的测试服务器 await bot.sync_commands(guild_ids=[123456789012345678]) # 替换成你的测试服务器ID别让同步自动执行,改成手动触发
把同步操作做成一个只有你能调用的命令,需要更新命令时再手动触发,而不是每次重启都跑。比如写个这样的命令:@bot.command() @commands.is_owner() # 只有机器人所有者能调用 async def sync(ctx): await bot.sync_commands(guild_ids=[ctx.guild.id]) await ctx.send("测试服务器命令已同步完成!")以后改完命令,在测试服务器里发
!sync就能同步,不用每次重启都触发。减少同步的频率
开发时没必要改一行代码就同步一次,等把一批命令的修改都搞定了,再同步一次就行——毕竟同步次数是按请求数算的,少调用几次就不会碰上限。
总结一下:开发阶段用服务器级同步+手动触发,完全可以避开Discord的每日限额,安心重启调试机器人~
备注:内容来源于stack exchange,提问作者Niels Langerak
相关产品推荐
相关产品推荐

