#python #arrays #csv #formatting #discord.py
#python #массивы #csv #форматирование #discord.py
Вопрос:
Я очень новичок в программировании, поэтому такие вещи для меня все еще новы.
import csv
import discord
from discord.ext import commands
f = open('discounts.csv')
csv_f = csv.reader(f)
token = '####'
client = discord.Client()
@client.event
async def on_ready():
print('Bot ready')
@client.event
async def on_message(message):
if message.author == client.user: #preventing the bot from replying to itself
return
if message.channel.id == ###:
if message.content.startswith('.sales'):
channel = client.get_channel(###)
msg = 'The latest discounts on Steam are:n'
await channel.send(msg)
for row in csv_f:
await channel.send(('{:<40} {:<10} {:<10}').format(*row).replace('Â',''))
else:
await message.delete()
client.run(token)
Обратите внимание, что я заменил идентификаторы токена и канала на ‘#’.
При запуске этот код работает так, как задумано, но когда я запускаю команду ‘.sales’ в канале, я получаю от бота следующее: Изображение результата
Когда я должен получить следующее: изображение желаемого результата
Мне интересно, можно ли вообще исправить эту проблему, и если да, то как я буду это делать, или есть какие-либо другие методы вывода содержимого CSV-файла в Discord.
Комментарии:
1. Я сделал что-то подобное, за исключением того, что вместо непосредственного использования файла .csv я создал словарь и использовал его вместо этого. Поскольку похоже, что ваш файл .csv является локальным, и вы все равно будете вручную редактировать его для получения новых скидок, я бы попробовал это.
2. Хорошо, я попробую, спасибо за совет.
Ответ №1:
Хорошо, я исправил это, добавив обратные метки вокруг списка, что превращает его в блок кода, что означает, что строки были упорядочены успешно:
import csv
import discord
from discord.ext import commands
f = open('discounts.csv')
csv_f = csv.reader(f)
token = '###'
client = discord.Client()
@client.event
async def on_ready():
print('Bot ready')
@client.event
async def on_message(message):
if message.author == client.user: #preventing the bot from replying to itself
return
if message.channel.id == ###:
if message.content.startswith('.sales'):
channel = client.get_channel(###)
msg = 'The latest discounts on Steam are:n'
await channel.send(msg)
for row in csv_f:
await channel.send(('`{:<40} {:<10} {:<10}`').format(*row).replace('Â',''))
else:
await message.delete()
client.run(token)
Надеюсь, это поможет кому-либо с подобной проблемой в будущем.