Как проверить on_message, если в сообщении есть смайлики для несоответствия? - PullRequest
0 голосов
/ 25 февраля 2019

Я довольно новичок в использовании python, и я пытаюсь кодировать бот-диск с основными функциями, и я хочу, чтобы один из них был таким, когда кто-то использует префикс, если он публикует смайлики, на которые бот отвечаетURL эмодзи, но у меня проблемы с попыткой заставить его работать.Я не знаю, как использовать on_message, чтобы проверить, содержит ли сообщение смайлики.Кто-нибудь может мне помочь?Спасибо.

#if message.content[0] == "!" and message.content[1:4] == " <:":
            #print(message.content[4:-1])
            #emoji_name = ""
            #for i in str(message.content[4:-1]):
                #if i != ":":
                    #emoji_name += i
                #if i == ":":
                    #print(emoji_name)
                    #break
            #await client.send_message(message.channel, get(client.get_all_emojis(), name=emoji_name).url)

1 Ответ

0 голосов
/ 25 февраля 2019

Discord custom emoji имеет вид <:name:id>.Поэтому, если вы используете re, библиотеку регулярных выражений Python, вы можете найти все пользовательские эмодзи в данном сообщении.

import re
import discord

@client.event
async def on_message(msg):
    custom_emojis = re.findall(r'<:\w*:\d*>', msg.content)
    custom_emojis = [int(e.split(':')[1].replace('>', '')) for e in custom_emojis]
    custom_emojis = [discord.utils.get(client.get_all_emojis(), id=e) for e in custom_emojis]
    # From now, `custom_emojis` is `list` of `discord.Emoji` that `msg` contains.

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

...