#python #python-3.x #python-2.7 #discord #discord.py
#python #python-3.x #python-2.7 #Discord #discord.py
Вопрос:
итак, я делал это:
from discord.ext import commands
from discord.utils import get
client = commands.Bot(command_prefix='><')
@client.event
async def on_ready():
print("I am ready Winson or not Winson :D")
@client.event
async def on_member_join(member):
channel = client.get_channel(744440768667844698)
message = await channel.send(f"Welcome to HaveNoFaith {member}, happy to be friends with you")
@client.command()
async def ping(ctx):
await ctx.send(f"Your Ping is {round(client.latency *1000)}ms")
@client.command()
async def Help(ctx2):
await ctx2.send("Hi, Im WelcomeBot v1.0...nnPrefix: ><nnCommands: pingn help")
# и затем я пытаюсь сделать как в сообщении «Добро пожаловать и т.д.». Если они отреагируют «проверить реакцию» в этом сообщении, они получат роль на сервере discord…
Ответ №1:
вы можете создать команду с именем addrr
(add reaction role), которая будет выглядеть следующим образом —
@client.command()
@commands.guild_only()
@commands.has_permissions(administrator=True)
async def addrr(self, ctx, channel: discord.TextChannel, message: discord.Message, emoji: discord.Emoji,
role: discord.Role):
await ctx.send(f"Setting up the reaction roles in {channel.mention}.")
await message.add_reaction(emoji)
def check1(reaction, user):
return user.id is not self.client.user.id and str(reaction.emoji) in [f"{emoji}"]
while True:
try:
reaction, user = await self.client.wait_for("reaction_add", check=check1)
if str(reaction.emoji) == f"{emoji}":
await user.add_roles(role)
await message.remove_reaction(reaction, user)
else:
await message.remove_reaction(reaction, user)
except:
await message.delete()
break
Это будет работать следующим образом —
><addrr <#channel mention> <message ID> <Emoji> <@Role Mention>
Комментарии:
1. обратитесь к этому изображению.
Ответ №2:
Таким образом, вы можете добавить реакцию на отправленные сообщения и использовать wait_for для ожидания реакции на это сообщение. Я рекомендую вам добавить время ожидания. Если вы не хотите, чтобы этот тайм-аут был установлен, просто отправьте это сообщение, сохраните его в списке и в событии raw_reaction_add проверьте, является ли эмодзи тем самым и является ли сообщение одним из сообщений в вашем списке