Пытался создать бот разногласий, чтобы реагировать на сообщения, но ничего не произошло - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу создать бота, который будет реагировать на все сообщения (используя эмоции из списков default_emojis и custom_emojis) от указанного пользователя c на моем сервере, где бы он ни отправлял сообщение.

Я просматривал несколько устаревших руководств и даже вопрос, который задавался здесь около года go, и я попытался это сделать, но на сервере ничего не произошло. Бот будет в сети, но не будет реагировать ни на что.

Это код, который я использовал:

import discord
from discord.ext    import commands
from discord.ext.commands   import Bot
import asyncio

bot = commands.Bot(command_prefix = "!")

async def on_ready():
    print ("welcome_msg")


default_emojis = [
    "\N{GRINNING FACE}",
]

custom_emojis = [
    "staylovesmall"
]

async def react(message):
    for emoji in default_emojis:
        await message.add_reaction(emoji)
    for emoji in message.guild.emojis:
        if emoji.name in custom_emojis:
            await message.add_reaction(emoji)

@bot.event
async def on_message(message):
    if message.author.id == "user_id":
        await react(message)

bot.run("<Bot ID here>")

Использование if message.author.id == "<the user's id>" : ломает бота, но использование

@bot.event
async def on_message(message):
    if message.author == bot.user:
        return
    if "react to me" in message.content.lower():
        await react(message)

У меня очень ограниченное знание python, и все, кроме списков и кортежей, для меня древнегреческое. Есть идеи, что происходит? Большое спасибо!

РЕДАКТИРОВАТЬ: я заменил str на int, и я попытался добавить текстовые эмоции (например, Regional_indicator_a :) Это дает мне эту ошибку:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Kailash Seshadri\Desktop\React\bot.py", line 39, in on_message
    await react(message)
  File "C:\Users\Kailash Seshadri\Desktop\React\bot.py", line 31, in react
    await message.add_reaction(emoji)
  File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\message.py", line 928, in add_reaction
    await self._state.http.add_reaction(self.channel.id, self.id, emoji)
  File "C:\Users\Kailash Seshadri\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\http.py", line 225, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 400 BAD REQUEST (error code: 10014): Unknown Emoji

Код:

default_emojis = [
    "\N{GRINNING FACE}",
    "\U0001F606"

    "\U0001F1F8"
]

Первые два сами по себе работают нормально, но когда я добавляю букву в позиции 3, появляется ошибка, и оба эмоции Unicode не регистрируются. Любые идеи? Спасибо

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Что касается решения проблемы смайликов, я рекомендую использовать вставленные при копировании смайлики вместо строк Юникода. Emojipedia - отличный ресурс для этого.

0 голосов
/ 24 февраля 2020

То, что сказал Патрик Хау: снежинки разногласий (например, author.id) стали целыми числами в версии 1.0. (документация)

Итак, фрагмент кода, который вы должны настроить, следующий:

Предполагается, что у пользователя, которого вы хотите проверить, есть идентификатор "123".

@bot.event
async def on_message(message):
    if message.author.id == 123: # removed the quotes here
        await react(message)
...