Python - 文本文件的内容作为单独的消息发布,而不是使用 Discord.py bot 的一条消息

Python - Contents of text file being posted as separate messages rather than one message using Discord.py bot

我目前正在尝试 post 使用 Discord.py

将文本文件的内容发送到不和谐频道

文本文件内容如下:

Competition English Premier League - Week 35 
Competitors Wolves v Everton 
Match Date Sunday, 12th  July 
Match Time ST: 12:00 
Channels: beIN Connect MENA 
   beIN Sports MENA 11 HD 
   beIN Sports MENA 2 HD 
   Belarus 5 Internet  
   Belarus 5 TV 

上面的文本文件的结构是我试图将文本文件中的数据输出到 discord 的方式。

目前,当我 运行 我的代码(posted 下面)时,信息正确显示,但上面文本文件的每一行都作为单独的不一致消息输出,但我需要所有post作为一条消息编辑的内容。

Discordbot.py

import discord


client = discord.Client()


@client.event
async def on_member_join(member):
    for channel in member.guild.channels:
        if str(channel) == "general":
            await channel.send_message(f"""Welcome to the server {member.mention}""")



@client.event
async def on_message(message):
    if message.author == client.user:
        return
    
        
    if message.content == "!test":
        with open('/home/brendan/Desktop/finaltestng.txt', 'r') as file:
            data = file.readlines()
            for line in data:
                print(line)
                await message.channel.send(line)


client.run("*******")

我试图将代码更改为:

   if message.content == "!test":
        with open('/home/brendan/Desktop/finaltestng.txt', 'r') as file:
            data = file.readlines()
            await message.channel.send(data)

使用更改后的代码,我能够按要求将完整的输出作为一条消息接收,但格式不正确

['Competition English Premier League - Week 35 \n', 'Competitors Wolves v Everton \n', 'Match Date Sunday, 12th  July \n', 'Match Time ST: 12:00 \n', 'Channels: beIN Connect MENA :tv:\n', ' \xa0 beIN Sports MENA 11 HD \n', ' \xa0 beIN Sports MENA 2 HD \n', ' \xa0 Belarus 5 Internet  \n', ' \xa0 Belarus 5 TV \n', '\n']

从这一点来看,我不确定前进的最佳方式是什么。

提前感谢任何能够就此问题提出建议或提供解决方案的人。

你的代码中的问题是你将文件中的每一行作为新消息发送,而不是你可以做的是使用 file.read() 读取文件一次并发送一次。

将此更改为

for line in data:
    print(line)
    await message.channel.send(line)

这个

await message.channel.send(file.read().strip())