Discord.py Никаких реактивных смайликов на выходе

#python #discord.py

#python #discord.py

Вопрос:

Когда я набираю / helps, я получаю только «Привет, Raw», Есть ли какие-либо ошибки в моем коде, потому что я не получил реактивные смайлики.

Вывод: Привет, Raw # 6839

 from discord.ext import menus,commands

bot = commands.Bot(command_prefix=('/'))

class MyMenu(menus.Menu):
    async def send_initial_message(self, ctx, channel):
        return await channel.send(f'Hello {ctx.author}')

    @menus.button('n{TRACK PREVIOUS SIGN}')
    async def on_track_previous(self, ctx, payload):
        await self.message.edit(content="a")

    @menus.button('n{REWIND SIGN}')
    async def on_rewind(self, ctx, payload):
        await self.message.edit(content="b")

    @menus.button('n{FAST FORWARD SIGN}')
    async def on_fast_forward(self, ctx, payload):
        await self.message.edit(content="c")

    @menus.button('n{TRACK NEXT SIGN}')
    async def on_track_next(self, ctx, payload):
        await self.message.edit(content="d")

@bot.command()
async def helps(ctx):
    m = MyMenu()
    await m.start(ctx)

bot.run('token')
  

Ответ №1:

Вы не используете допустимые экранирования имен. Синтаксис требует заглавной буквы N, и вам нужно использовать точные имена этих символов (вы можете использовать "<char>".encode('ascii', 'namereplace') для их получения)

 class MyMenu(menus.Menu):
    async def send_initial_message(self, ctx, channel):
        return await channel.send(f'Hello {ctx.author}')

    @menus.button('N{BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR}N{VARIATION SELECTOR-16}')
    async def on_track_previous(self, ctx, payload):
        await self.message.edit(content="a")

    @menus.button('N{BLACK LEFT-POINTING DOUBLE TRIANGLE}')
    async def on_rewind(self, ctx, payload):
        await self.message.edit(content="b")

    @menus.button('N{BLACK RIGHT-POINTING DOUBLE TRIANGLE}')
    async def on_fast_forward(self, ctx, payload):
        await self.message.edit(content="c")

    @menus.button('N{BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR}N{VARIATION SELECTOR-16}')
    async def on_track_next(self, ctx, payload):
        await self.message.edit(content="d")