我不想将我的机器人用作永远运行的守护进程,而是用作一种“shell 脚本”。所以它应该在完成工作后自动退出。
到目前为止我在 Python 3.5 / Python 3.6 中的方法:
import discord
TOKEN = '<redacted>'
client = discord.Client()
@client.event
async def on_ready():
for member in client.get_all_members():
print(member.display_name)
# please, please quit now!
client.run(TOKEN)
我想要的是,脚本应该在打印所有成员的 display_names 后退出,这样我就可以在其他地方进一步处理它们。目前它确实打印了所需的信息,但会继续永远运行。
自己回答我的问题:
只需将行
# please, please quit now!
替换为 await client.logout()
即可完成工作。
如果有人在 6 年后仍在寻找相同的答案,我无法在 Discord.py 库的 Bot 和 Client 实例中找到任何存在的方法。 不过,它可以通过 sys.exit() 或通过机器人使用 subprocess.Popen() 调用脚本,然后使用 os.killpg() 关闭来完成。 这两种方式听起来都是错误和非常规的,但我没有找到更好的