Как записать историю сообщений текстового канала в .txt? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать команду для своего бота Discord, которая будет записывать историю канала в .txt.

Я пробовал несколько разных попыток, используя channel.history (). Flatten ().Я уверен, что в моем коде есть серьезные проблемы, и я прошу прощения за это.Я совершенно новичок в этом и не совсем понял концепции.Большое спасибо.

@client.command(name="history")
async def history():
    channel_id = XXXXXXXXXXXXXXXX
    messages = await channel.history(channel_id).flatten()
    with open("channel_messages.txt", "a", encoding="utf-8") as f:
        f.write(f"{messages}")

1 Ответ

0 голосов
/ 01 мая 2019

вам не нужно передавать идентификатор для TextChannel.history

@client.command()
async def history(ctx, limit: int = 100):  
    messages = await ctx.channel.history(limit=limit).flatten()
    with open("channel_messages.txt", "a+", encoding="utf-8") as f:
        print(*messages, sep="\n\n", file=f)

Другие изменения: удален name=, поскольку по умолчанию используется имя обратного вызова, для каждой команды требуется контекст вызова , я добавил аргумент limit, чтобы вы могли контролировать, как я получил много сообщений, и я изменил write на print с аргументом file, потому что я думаю, что это облегчает контроль над тем, что записывается в файл.

...