ra9_9ar
@ra9_9ar

Как через discord.py проверить нажатие кнопки в лс?

Всем привет!
Суть вопроса такова, хочу, чтобы когда написали команду на сервере, бот отправлял сообщение с кнопками человеку, который написал и если человек нажал на кнопку в лс, то выводилось сообщение и записывала число в бд(число зависит от варианта).
Помогите пожалуйста!

P.S. Заранее спасибо
@bot.command()
async def knb(ctx, member: discord.User = None):
    name = 'knb'
    if member is None:
        await ctx.send(f"**{ctx.author}**, укажите пользователя, с которым желаете сыграть.")
    else:
        embed = discord.Embed(title='Вы начали игру "Камень Ножници Бумага".', description='Через 10 секунд появится победитель!', color=color)
        await ctx.send(embed=embed)
        embed1 = discord.Embed(title='Выберете', description='Камень    Ножници    Бумага', color=color)
        msg = await ctx.author.send(embed = embed1,
                components = [
                    Button(style = ButtonStyle.red, label = 'Камень'),
                    Button(style = ButtonStyle.red, label = 'Ножници'),
                    Button(style = ButtonStyle.red, label = 'Бумага')
                ])
        responce = await bot.wait_for('button_click')
        if responce.channel == ctx.channel.type == discord.ChannelType.private:
            if responce.component.label == 'Камень':
                await msg.delete()
                cur.execute('INSERT INTO {} VALUES (?, ?)'.format(name), (ctx.author.id,1))
                knb.commit()
                await ctx.author.send('Вы выбрали "Камень"')
            elif responce.component.label == 'Ножници':
                await msg.delete()
                cur.execute('INSERT INTO {} VALUES (?, ?)'.format(name), (ctx.author.id,2))
                knb.commit()
                await ctx.author.send('Вы выбрали "Ножници"')
            elif responce.component.label == 'Бумага':
                await msg.delete()
                cur.execute('INSERT INTO {} VALUES (?, ?)'.format(name), (ctx.author.id,3))
                knb.commit()
                await ctx.author.send('Вы выбрали "Бумагу"')
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121
Если приложенный код работает, то пишите каждый раз после получения респонза.

А вообще первый раз вижу конструкцию responce = await bot.wait_for('button_click'), подозреваю это что-то устаревшее. Обычно такое пишется на классах в библиотеке есть пример крестиков-ноликов, камень-ножницы-бумага реализуется еще проще.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы