如何创建使机器人在 discord.py 后离线的命令

How do you create a command that makes the bot go OFFLINE in discord.py

可能吗?

我想为我的 discord 机器人创建一个命令,让每个人都可以离线使用该机器人。我想在任何 discord 服务器中键入该命令,然后机器人就会离线。这比进入文件或终端按 ctrl+c 容易得多。甚至可以发出这样的命令吗?如果是这样,我可以知道如何添加该命令吗?我想向我的机器人添加一些管理命令,这绝对是对列表的一个很好的补充。谢谢-

如果我明白你在这里试图做什么,你可以通过调用 sys.exit() 之类的东西来添加一个退出 bot.py 程序的命令。这只会终止程序 运行 机器人,使机器人离线。

您可以使用 sys.exit()os.exit() 来终止您的机器人进程。请记住在终止进程之前保存您可能需要保存的任何数据。

sys.exit()

使用 sys.exit(),您可以提供一条消息,然后将打印该消息。例如:

import sys

sys.exit("Bot has been shut down")

os.exit()

使用 os.exit(),您可以提供退出代码,这是一个数字。你可能真的不需要那个退出代码,但它在 bash 脚本中很有用。通常,代码 0 表示进程已成功终止。例如:

import os

os.exit(0)

我建议为您的 bot 选择一个更优雅的退出,如果您使用 discord.py 的主分支,它将使用 await bot.close(),它会干净地关闭它与 discord 建立的 websocket 连接。

@bot.command()
async def shutdown(ctx):
   await ctx.send("Shutting down bot!")
   await bot.close()

如果您使用的是稳定版本,即 1.7.3 which is installed when you do pip install discord.py,您可以使用 await bot.logout() 代替

与 master 分支的 Bot.close 不同,这会立即删除所有连接。

@bot.command()
async def shutdown(ctx):
   await ctx.send("Shutting down bot!")
   await bot.logout()