让机器人完成工作后自动退出

问题描述 投票:0回答:2

我不想将我的机器人用作永远运行的守护进程,而是用作一种“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 后退出,这样我就可以在其他地方进一步处理它们。目前它确实打印了所需的信息,但会继续永远运行。

python discord discord.py
2个回答
1
投票

自己回答我的问题:

只需将行

# please, please quit now!
替换为
await client.logout()
即可完成工作。


0
投票

如果有人在 6 年后仍在寻找相同的答案,我无法在 Discord.py 库的 Bot 和 Client 实例中找到任何存在的方法。 不过,它可以通过 sys.exit() 或通过机器人使用 subprocess.Popen() 调用脚本,然后使用 os.killpg() 关闭来完成。 这两种方式听起来都是错误和非常规的,但我没有找到更好的

© www.soinside.com 2019 - 2024. All rights reserved.