Добавление реакций на определенный идентификатор сообщения в цикле - PullRequest
0 голосов
/ 26 октября 2018

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

Task exception was never retrieved
future: <Task finished coro=<react() done, defined at c:/Users/test/Desktop/test bot/test.py:161> exception=InvalidArgument('message argument must be a Message',)>
Traceback (most recent call last):
  File "c:/Users/test/Desktop/test bot/test.py", line 167, in react
    await client.add_reaction(msg, emoji1)
  File "C:\Users\test\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 949, in add_reaction
    raise InvalidArgument('message argument must be a Message')
discord.errors.InvalidArgument: message argument must be a Message
Test Bot Online.
Future exception was never retrieved
future: <Future finished exception=ServerDisconnectedError()>
aiohttp.errors.ServerDisconnectedError

client = discord.Client()
async def react():
    await client.wait_until_ready()
    channel = client.get_channel("479919577279758111")
    while not client.is_closed:
        msg =  get(client.get_message(channel,'505306270891507712'))
        emoji1 = get(client.get_all_emojis(), name='gsmile')
        await client.add_reaction(msg, emoji1)
        await client.remove_reaction(msg, emoji1)
        await asyncio.sleep(5)

@client.event
client.loop.create_task(react())

Ответы [ 2 ]

0 голосов
/ 26 октября 2018
msg = get(client.get_message(channel,'505306270891507712'))

Может быть, там, где ваша проблема.

msg = client.get_message(channel,'505306270891507712')

достаточно, чтобы получить объект Message.Вы также добавляете реакцию, а затем сразу ее удаляете.Я не уверен, что это то, что вы хотели.

Вам также необходимо передать объект Member в remove_reaction:

await client.remove_reaction(msg, emoji1, channel.server.me)
0 голосов
/ 26 октября 2018

Я считаю, что вы не можете добавлять реакции с именем, вы должны поставить код или фактический эмодзи. Вам также не нужно @client.event над созданием задачи.

...