Discord.py Bot任务循环未在后台运行

时间:2020-04-15 01:09:18

标签: python discord

我是机器人编程的新手,我无法让任务在后台运行。

有问题的功能会在发出某些帖子时侦听irc流并收集数据。 如果我在脚本上使用os.popen,它目前存在并且可以正常运行,但是我希望数据成为机器人的一部分,这将使其更易于处理。当我运行@ task.loop时会发生什么,那就是它运行了,但是机器人对聊天无响应了。

这里是整个齿轮(稍加修改以使其易于阅读):

class IRC(commands.Cog):
    def __init__(self, bot):
        self.index = 0
        self.bot = bot
        load_dotenv()
        token = os.getenv('IRC_TOKEN')
        nickname = os.getenv('IRC_NICK')
        server = os.getenv('IRC_SERVER')
        port = os.getenv('IRC_PORT')
        channel = os.getenv('IRC_CHANNEL')
        self.sock = socket.socket()
        self.sock.connect((server, port))
        self.sock.send(f"PASS {token}\n".encode('utf-8'))
        self.sock.send(f"NICK {nickname}\n".encode('utf-8'))
        self.sock.send(f"JOIN {channel}\n".encode('utf-8'))
        print("Listening to IRC")
        self.reader.start()

    @tasks.loop(seconds=0)
    async def reader(self):
        resp = self.sock.recv(2048).decode('utf-8')
        # print(resp)
        if resp.startswith('PING'):
            self.sock.send("PONG\n".encode('utf-8'))
        elif len(resp) > 0:
            if resp.startswith("listening phrase"):
                print(resp)
        else: pass    

def setup(bot):
    bot.add_cog(IRC(bot))

有什么想法吗?

0 个答案:

没有答案