Как получить DM и записать их в текстовый файл? - PullRequest
0 голосов
/ 17 апреля 2020

Мне удалось заставить своего бота отправлять DM людям, указав их ID и сообщение, которое я хочу отправить. Проблема в том, что люди отвечают боту, и я хотел бы получать сообщения в моем окне консоли (где одновременно перечислены исключения / ошибки). Я попытался использовать следующий код, но он вернул, что у него нет атрибута 'message':

@client.event(pass_context=True)
async def on_message(ctx):
    print(f"{ctx.author} said: {ctx.message}")
    await ctx.send(f"Hi, I'm an automated message. I cannot receive any information on your message. All I might get is: {ctx}")
    log = open("commands/info/logging/logmsg.txt", "a")
    log.writelines(f"{ctx.author} has sent: {ctx.message}")

ОШИБКА:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\MODERATED\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "showmessages.py", line 18, in on_message
    print(f"{ctx.author} said: {ctx.message}")
AttributeError: 'Message' object has no attribute 'message'

1 Ответ

1 голос
/ 17 апреля 2020

on_message получает в качестве входных данных объект Message, а не объект Context.

@client.event
async def on_message(message):
    if message.author.bot:
        return # ignore our own messages
    print(f"{message.author} said: {message.content}")
    await message.channel.send(f"Hi, I'm an automated message. I cannot receive any information on your message. All I might get is: {message}")
    log = open("commands/info/logging/logmsg.txt", "a")
    log.writelines(f"{message.author} has sent: {message.content}")

Обратите внимание, что в данный момент это сработает для всех сообщений, которые бот может "увидеть"

...