Невозможно получить пользователя, который отреагировал на сообщение - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать команду! Ban, которая при реализации будет запрашивать подтверждение, хочу ли я запретить или нет с конкретными смайликами в качестве реакции. Если я отреагирую на смайлики, я отправлю сообщение «Вы можете запретить» (пока) и еще одно сообщение о реакции на смайлики. ТАКЖЕ, я хочу, чтобы бот принимал реакцию только того, кто инициировал команду! Я думаю, что это в основном из-за того, что бот не может выбрать человека, который создал команду! Ban, а затем отреагировал? Я действительно не знаю, как получить это.

Пожалуйста, помогите мне! Вот мой код:

import os
import discord
from discord import guild, message
from discord.ext import commands
from dotenv import *
import logging
import random

logging.basicConfig(level=logging.INFO)

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

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('GUILD_ID')

@bot.command(name="ban", help="Bans someone from the server")
@commands.has_permissions(ban_members=True)
async def ban(ctx, user: int, reason: str):
    author = ctx.message.author
    guild = discord.utils.get(bot.guilds, id=GUILD)
    mem = bot.get_user(user)
    name = mem.display_name
    discrim = mem.discriminator
    time = ctx.message.created_at
    embed = discord.Embed(title="Banning User", description=f"Do you want to ban {name}{discrim} ({user})"
                                                            f" from the server for {reason}?")
    embed.set_footer(text=time)
    msg = await ctx.send(embed=embed)
    await msg.add_reaction(emoji="\U0001F44E")
    await msg.add_reaction(emoji="\U0001F44D")


@bot.event
async def on_reaction_add(reaction, user):
    if reaction.message.author == bot:
        if user == ban.author:
            if reaction.emoji == "\U0001F44E":
                mesg = "You can ban!"
            else:
                mesg = "You cannot ban!"
            await reaction.message.channel.send(mesg)


bot.run(TOKEN)

...