#python #discord.py #discord.py-rewrite
#python #discord.py
Вопрос:
У меня вопрос о проверке команд и о том, возможно ли обойти аргумент команды. Я создаю команду ответа для своего почтового бота discord, вместо использования команды reply <user> <message>
я хотел бы удалить аргумент user и просто использовать reply <message>
.
Однако мне нужно получить пользователя так, как я это делал при использовании его в качестве аргумента команды. Возможно ли это?
Вот над чем я работаю:
@commands.command()
@checks.is_channel_mod()
async def reply(self, ctx, user: discord.User, *, message):
"""Send a message thread reply to user."""
if not user.dm_channel:
await user.create_dm()
try:
if ctx.message.channel.name == f"{user.name.lower()}{user.discriminator}":
time = datetime.utcnow()
msg_sent = message[:2000] or "blank"
embed = discord.Embed(title=f"Moderator Reply", description=msg_sent, timestamp=time, colour=discord.Colour(0xff8100))
embed.set_footer(text=f"Sent by {ctx.author.name}#{ctx.author.discriminator}")
msg = await user.dm_channel.send(embed=embed)
await ctx.send(f"{ctx.author.name} sent a reply to {user.name}.")
else:
await ctx.send(f'Please check you have the correct channel or thread ID.')
except discord.Forbidden:
await ctx.send(f"Reply cannot be sent because {user.name}'s direct messages are set to private.")
except discord.HTTPException:
await ctx.send('I failed in sending the message.')
except Exception as e:
await ctx.send(f'There's been a problem while sending the message that's not of type "Forbidden" or'
f' "HTTPException", but {e}.')
Ответ №1:
Я бы сделал это следующим образом, вы можете заменить pass на все, что вы хотите, чтобы произошло.
user = ""
@client.event
async def on_message(message):
global user
if "Direct Message" in str(message.channel):
user = message.author
@client.command()
async def reply(ctx, *, message):
global user
if user != "":
pass
return
await ctx.send("No messages recieved")