我是机器人编程的新手,我无法让任务在后台运行。
有问题的功能会在发出某些帖子时侦听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))
有什么想法吗?