Python - содержимое текстового файла отправляется как отдельные сообщения, а не как одно сообщение с использованием бота Discord.py - PullRequest
1 голос
/ 13 июля 2020

В настоящее время я пытаюсь отправить содержимое текстового файла в канал Discord с помощью 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.

В настоящее время, когда я запускаю свой код (опубликованный ниже), информация отображается правильно, но выводится каждая строка текстового файла выше как отдельное сообщение о разногласиях, но я требую, чтобы весь контент был опубликован как одно сообщение.

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']

С этого момента я не уверен, как лучше всего двигаться дальше будет.

Заранее благодарим всех, кто может посоветовать или предложить решение этой проблемы.

1 Ответ

1 голос
/ 13 июля 2020

Проблема в вашем коде, вы отправляете каждую строку в файле как новое сообщение, вместо этого вы можете прочитать файл один раз, используя file.read(), и отправить его один раз.

Измените это на

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

это

await message.channel.send(file.read().strip())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...