基于 Python 的 Discord Bot 在本地工作,但从未在 heroku 上托管
Posted
技术标签:
【中文标题】基于 Python 的 Discord Bot 在本地工作,但从未在 heroku 上托管【英文标题】:Python-based Discord Bot working locally but not once hosted on heroku 【发布时间】:2019-07-22 21:25:45 【问题描述】:我创建了一个 discord 机器人,它在本地启动时可以完美运行,但一旦托管和启动,除了 !help 之外不会响应任何命令。 我得到了错误日志,它们是:
尝试 !kick @user :
discord.ext.commands.errors.MissingRequiredArgument: user_kick is a required argument that is missing
该命令可以完全离线工作。
kick 命令是这样写的:
@bot.command()
async def kick(ctx, user_kick : discord.Member):
role = discord.utils.get(user_kick.guild.roles, name=config['perm_role'])
if role in ctx.message.author.roles:
await user_kick.kick(reason=None)
else:
await ctx.send(content="Permission denied!")
我有(我认为?)正确的 requirements.txt、runtime.txt 和 Procfile 文件。
编辑:
我的 requirements.txt 文件如下所示:
-e git+git://github.com/Rapptz/discord.py.git@async#egg=discord
那里有什么要改变的吗? 感谢您阅读我,如果这不是在这里提问的正确方式,我们深表歉意。
编辑 2:
仍然不知道为什么会这样。
【问题讨论】:
请不要链接,尝试发布一个最小的、可行的、可重现的示例,我们不会查看您的存储库 编辑了我的帖子,解释了 kick 命令而不是整个 git heroku 自动休眠? 我确定工作人员 Dyno 已激活,因为该机器人仅响应帮助命令。 【参考方案1】:我的一些机器人经常遇到这样的问题。如果您的机器人使用on_message
,那么它将干扰其他命令。
要解决此问题,请在 on_message
中的某处添加 await client.process_commands(message)
。如果您没有使用on_message
,那么我建议您再检查一次 requirements.txt。
例子:
@client.event
async def on_message(message):
if message.content.startswith("!thecommand"):
#whatever you had in the command
await client.process_commands(message)
【讨论】:
我根本没有使用on_message,所以我要在requirements.txt中寻找一些东西。 你在用什么?您的 requirements.txt 中有什么内容? 我的 requirements.txt 在帖子里以上是关于基于 Python 的 Discord Bot 在本地工作,但从未在 heroku 上托管的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.6 Discord bot Bot 事件冲突
Discord bot python:discord.errors.ClientException:找不到ffmpeg