【问题标题】:Exception mechanism doesn't work after some times异常机制在一段时间后不起作用
【发布时间】:2021-08-22 21:42:07
【问题描述】:

我使用 discord.py 库在 Python 中创建了一个 Discord 机器人。这是我的机器人的伪代码:

import discord


client = discord.Client()


async def test_func():
    return "This is a test"


async def error_func():
    raise Exception


text_to_func = {"test": test_func, "error": error_func}


@client.event
async def on_message(message):
    if message.content.startswith("$"):
        command = message.content[1:]
        try:
            func = text_to_func[command]
            answer = await func()
        except Exception:
            answer = "Error !"
        await message.reply(answer)


client.run("<TOKEN>")

当机器人收到消息时,会执行on_message 函数。它检查消息是否以“$”开头,这是我的机器人的前缀,并在 try/except 块中执行与命令关联的函数。

我使用 ssh 连接在 ubuntu 服务器上运行此脚本。

现在,如果我在我的 discord 服务器上发送“$test”,机器人会回复“这是一个测试”,如果我发送“$error”,它会回复“错误!”。问题是,经过一定时间(可以从 6 小时到 2 天),“$error”命令将不再起作用。 bot 不会回复命令,但它仍然会回复“$test”。

有人知道那里发生了什么吗?感谢您的帮助。

【问题讨论】:

  • 你用的“except”错了,要么是except:要么是except except discord.DiscordException:请谷歌如何使用except
  • 我不确定你在说什么。我应该用“除了discord.DiscordException:”替换“except Exception:”吗?这将如何解决我的问题?谢谢
  • 是,否则使用错误处理程序

标签: python discord.py try-except


【解决方案1】:

我不能 100% 确定您要完成什么,但如果您实际上只是想对错误做出反应,我建议您只使用:

@client.event
async def on_error(event, args, kwargs):
    #what you want to happen in the event of an error

而不是将你所做的一切都放在 try...except 块中。

Here 是 on_error 事件监听器的官方文档。

【讨论】:

  • 谢谢你,我明天测试一下,希望能解决我的问题!
  • 不幸的是它给出了同样的问题,但感谢您的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
相关资源
最近更新 更多