Discord py пересылка сообщений (с встраиваниями), отправленных по одному каналу на другой, и как определить количество участников на сервере? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу пересылать сообщения, отправленные по определенному каналу, на другой канал, основываясь на количестве реакций на реакцию ? emoji. Сообщение содержит несколько вложений и отправляется ботом YAGPDB.xyz из дополнительного реддита. Если сообщение в определенном канале получает более одного отклика, я хочу переслать это сообщение в другой канал и удалить его на текущем канале. Вот как выглядит типичное сообщение от этого бота (со вставками):

enter image description here Я написал следующий код:

@client.event
async def on_raw_reaction_add(payload):
    if payload.channel_id in CHANNEL_LIST:
        if payload.emoji.name=='\U0001F53C':
            channel=client.get_channel(payload.channel_id)
            message=await channel.fetch_message(payload.message_id)
            reaction=get(message.reactions,emoji=payload.emoji.name)
            if reaction and reaction.count>1:
                await message.pin()
        elif payload.emoji.name=='\U0001F53B':
            channel=client.get_channel(payload.channel_id)
            message=await channel.fetch_message(payload.message_id)
            reaction=get(message.reactions,emoji=payload.emoji.name)
            if reaction and reaction.count>1:
                channel=client.get_channel(DELETED_MESSAGES_CHANNEL)
                await channel.send('{}: {}'.format(message.author, message.content),embed=message.content.embeds)
                await message.delete()

Я получаю следующее ошибка,

Ignoring exception in on_raw_reaction_add
Traceback (most recent call last):
  File "C:\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "s.py", line 46, in on_raw_reaction_add
    await channel.send('{}: {}'.format(message.author, message.content),embed=message.content.embeds)
AttributeError: 'str' object has no attribute 'embeds'

Если я использую embed=message.embeds вместо message.content.embeds, я получаю следующую ошибку,

Ignoring exception in on_raw_reaction_add
Traceback (most recent call last):
  File "C:\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "s.py", line 46, in on_raw_reaction_add
    await channel.send('{}: {}'.format(message.author, message.content),embed=message.embeds)
  File "C:\Python\Python38\lib\site-packages\discord\abc.py", line 828, in send
    embed = embed.to_dict()
AttributeError: 'list' object has no attribute 'to_dict'

Как мне получить все вставки в этом сообщении и переслать это как было отправлено сюда на другой канал? А также, как мне узнать количество пользователей на моем сервере, которые НЕ БОТЫ ? Любые предложения очень ценятся!

...