gpt4 book ai didi

python - Discord.py 卡住了,试图遍历日志并发送到服务器

转载 作者:行者123 更新时间:2023-12-04 07:55:02 26 4
gpt4 key购买 nike

我正在尝试创建一个简单的 discord bot,它解析一个不断写入的日志文件,并将新行发送到我的服务器名称日志上的不和谐 channel 。
解析文件并打印输出很容易并且工作正常。我的问题是试图将它合并到不和谐中。似乎我的程序在连接后的某个时间挂起并且从不发送任何消息。机器人在服务器上制作它并完成 on_ready。
我是 discord.py 的新手,所以我很感激任何指导。谢谢你。

import time, discord, asyncio, nest_asyncio

nest_asyncio.apply()

TOKEN = '123'

class MyClient(discord.Client):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

async def on_ready(self):
print('Logged in as')
print(self.user.name)
print(self.user.id)
print('------')

self.bg_task = self.loop.create_task(self.background_task())

async def background_task(self):
channel = discord.utils.get(ctx.guild.channels, name="logs")
with open('log.txt', 'r') as f:
while True:
line = ''
while len(line) == 0 or line[-1] != '\n':
tail = f.readline()
if tail == '':
time.sleep(0.1)
continue
line += tail
print(f"Sending: {line}")
await channel.send(line)
await asyncio.sleep(1)

client = MyClient()
client.run(TOKEN)

最佳答案

我也在用 discord.py 开发一个不和谐的机器人,所以我想我可以帮助你。
这是我将如何做到的:
当机器人准备好时,它会打印出他已登录

import discord
client = discord.Client()

@client.event
async def on_ready():
print('Logged in as ' + str(client.user))
当您想查看 .txt 文件中的内容时,只需输入“显示内容”
@client.event
async def on_message(message):
if message.content == 'show content':

line = ' '

while len(line) != 0:
首先它读取最上面的一行
            f = open('C:\\Users\\USERNAME\\FOLDER\\logs.txt', 'r')
line = f.readline()
content_of_textfile = f.read()
f.close()
然后从文件中删除它。 我知道这不是最干净的方法,我相信有更好的解决方案
            f = open('C:\\Users\\USERNAME\\FOLDER\\logs.txt', 'w')
content_of_textfile.replace('line', '')
f.write(content_of_textfile)
f.close()
然后将消息发送到您的不和谐 channel
            await message.channel.send(line)

client.run('YOUR TOKEN')
希望这会有所帮助:D

关于python - Discord.py 卡住了,试图遍历日志并发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66741104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com