Python 上传到heroku后,Discord重写机器人崩溃
到目前为止,它在heroku和当地都运作良好。现在它只在本地工作,但在heroku上部署后不工作。这是Heroku的日志:Python 上传到heroku后,Discord重写机器人崩溃,python,heroku,discord.py,Python,Heroku,Discord.py,到目前为止,它在heroku和当地都运作良好。现在它只在本地工作,但在heroku上部署后不工作。这是Heroku的日志: 2021-05-11T14:24:06.000000+00:00 app[api]: Build succeeded 2021-05-11T14:24:06.163275+00:00 heroku[worker.1]: State changed from starting to up 2021-05-11T14:24:15.306244+00:00 app[worker.
2021-05-11T14:24:06.000000+00:00 app[api]: Build succeeded
2021-05-11T14:24:06.163275+00:00 heroku[worker.1]: State changed from starting to up
2021-05-11T14:24:15.306244+00:00 app[worker.1]: Traceback (most recent call last):
2021-05-11T14:24:15.306768+00:00 app[worker.1]: File "/app/dbot.py", line 2, in <module>
2021-05-11T14:24:15.307297+00:00 app[worker.1]: import discord
2021-05-11T14:24:15.307369+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/__init__.py", line 23, in <module>
2021-05-11T14:24:15.307970+00:00 app[worker.1]: from .client import *
2021-05-11T14:24:15.307996+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/client.py", line 36, in <module>
2021-05-11T14:24:15.308464+00:00 app[worker.1]: from .user import User
2021-05-11T14:24:15.308533+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/user.py", line 26, in <module>
2021-05-11T14:24:15.309148+00:00 app[worker.1]: import discord.abc
2021-05-11T14:24:15.309214+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/abc.py", line 101, in <module>
2021-05-11T14:24:15.309876+00:00 app[worker.1]: SnowflakeTime = Union[Snowflake, datetime]
2021-05-11T14:24:15.310045+00:00 app[worker.1]: NameError: name 'datetime' is not defined
2021-05-11T14:24:15.685219+00:00 heroku[worker.1]: Process exited with status 1
2021-05-11T14:24:15.995755+00:00 heroku[worker.1]: State changed from up to crashed
我的proc文件中有:
worker: python dbot.py
我知道它说“datetime”没有定义,但下面是我的主python文件的前几行:
import datetime
import discord
from discord.ext import commands
from discord import FFmpegPCMAudio
import random
import youtube_dl
import os
from discord.utils import get
import ctypes
import ctypes.util
据我所知,这一切都是在我将以下事件添加到代码后开始的:
@client.event
async def on_message(ctx):
try:
if ctx.channel.name == "memes" and "https://" not in str(ctx.content) and not ctx.attachments:
await ctx.channel.purge(limit=1)
else:
await client.process_commands(ctx)
except:
await client.process_commands(ctx)
git+https://github.com/Rapptz/discord.py
是discord.py的开发分支,请勿在生产中使用
git+https://github.com/Rapptz/discord.py@1.7.2
1.7.2是最新版本
或者来自PyPi
discord.py>=1.7.2
discord.py在PyPI中可用,因此可以直接从PyPI下载。前面的答案是导致该错误的正确答案,但您为on_消息事件显示的内容也不正确。我建议你读一读,看看它是如何工作的 编辑: 它当前正在工作,因为您没有使用任何使用
上下文的对象<消息上的代码>采用discord.message
参数,而不是commands.Context
参数。这意味着,如果您尝试使用上下文中的方法或属性,则该方法或属性将不起作用,因为消息是传递给消息的参数
例如,如果我试图在您的代码中执行ctx.bot
,它会给我一个错误,因为discord.Message
没有bot属性。现在,您可能正在查看文档,并想知道为什么它会说ctx
具有bot属性,但当您尝试它时,它会出错。因此,我建议将您的on_message
参数更改为调用message
,并将ctx
的所有实例更改为message
,以避免以后的混淆。名称错误:未定义名称“datetime”
:系统上是否为python-3.9安装了datetime?正是我所需要的,谢谢!
discord.py>=1.7.2