繁体   English   中英

关闭 Python shell 后 Discord bot 关闭

[英]Discord bot closing after I close my Python shell

所以我用 Python 编写了一个 Discord 机器人并且它工作正常。 但是,当我关闭 Python shell(运行代码的地方)时,机器人停止工作。 有什么我可以做的,所以无论外壳是否关闭,我的机器人都可以继续工作? 以防万一,如果您需要代码,这里是

import os
import random
import datetime
import discord

bot = discord.Client()

@bot.event
async def on_member_join(member):
    if member.id == bot.id:
        return
    channel = discord.utils.get(bot.guilds[0].channels,name="genral")
    member_id = member.id
    response = f"Welcome to For Testing,<@{member_id}> !"
    await channel.send(response)


@bot.event
async def on_message(message):
    if message.author == bot.user:
        return
    Keywords = ["sup","lol","yeet"]
    channel = message.channel
    for keyword in Keywords:
        if keyword.lower() in message.content.lower():
            user_id = message.author.id
            response = f"Did someone say {keyword.lower()}? I guess it was <@{user_id}>"
    await channel.send(response)

@bot.event
async def reminder():
    while(True):
        await bot.wait_until_ready()
        online_members = []
        for member in bot.get_all_members():
            online_members.append(member.id)
        if len(online_members) > 0:
            user = random.choice(online_members)
            channel = discord.utils.get(bot.guilds[0].channels,name="genral")
            response = f"So what are u up to <@{user.id}>"
            await channel.send(response)

        await asyncio.sleep(3600)
bot.loop.create_task(reminder())

real_token = "THE TOKEN"

bot.run("THE TOKEN")

您可以将脚本保存为文件扩展名为 .py 的文件,然后通过文件管理器运行它(例如,在 Windows 中双击该文件)。 这应该运行您的脚本而无需打开外壳。

https://realpython.com/run-python-scripts/#how-to-run-python-scripts-from-a-file-manager

在 Windows 上,您可以使用 pythonw.exe 将 python 脚本作为后台进程运行:

默认情况下,Python 脚本(扩展名为 .py 的文件)将由 python.exe 执行。 此可执行文件会打开一个终端,即使程序使用 GUI,该终端也会保持打开状态。 如果您不希望发生这种情况,请使用扩展名 .pyw,这将导致脚本默认由 pythonw.exe 执行(两个可执行文件都位于 Python 安装目录的顶层)。 这会在启动时抑制终端窗口。

例如,

C:\ThanosDodd\Python3.6\pythonw.exe C:\\Python\Scripts\moveDLs.py

或者

pythonw.exe pythonFile.py

您可以将代码导出到 repl.it 并创建一个名为 keep_alive.py 的文件

from flask import Flask
from threading import Thread

app = Flask('')

@app.route('/')
def main():
    return "Your bot is alive!"

def run():
    app.run(host="0.0.0.0", port=<any Port>)

def keep_alive():
    server = Thread(target=run)
    server.start()

然后做

from keep_alive import keep_alive

然后在 bot.run 之前调用 keep_alive 函数,这将创建一个 Flask 服务器,然后您可以获取服务器链接并在http://uptimerobot.com/ 中创建监视器有关更多信息,请查看链接https://repl.it/talk/学习/托管-discordpy-bots-with-replit/11008

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM