Бот не отправляет запрошенное сообщение

#python #python-3.x #discord #discord.py #discord.py-rewrite

#python #python-3.x #Discord #discord.py #discord.py-переписать

Вопрос:

Я работаю над ботом поддержки, но это не совсем так, как ожидалось. Вместо того, чтобы сразу перейти к DMS, бот отправляет сообщение в триггере. Когда я запускаю команду, я должен поместить сообщение, прежде чем оно отправит мне DMS. Затем он выполняет все шаги, но после того, как я добавлю что-то еще, он отправляет исходное контекстное сообщение.

 @bot.command()
async def contact(ctx, *, message):
  channel = bot.get_channel(766311471063498852)
  embed1 = discord.Embed(colour=discord.Colour.blue())
  embed1.add_field(name="Your support lays behind this bot.", value="Do you need support?", inline=True)
  embed_1sent = await ctx.author.send(embed=embed1)
  embed2 = discord.Embed(colour=discord.Colour.blue())
  embed2.add_field(name="Alright.", value="What would you like to send to staff?", inline=True)
  await embed_1sent.add_reaction("<a:CheckMark:768095274949935146>")
  await embed_1sent.add_reaction("<a:XMark:768095331555606528>")
  def check(reaction, member):
    return member == member and str(reaction.emoji)== "<a:CheckMark:768095274949935146>"

  try:
   reaction, member = await bot.wait_for('reaction_add', timeout=60.0, check=check)
  except asyncio.Timeout.Error:
    await member.send("You took too long. Command cancelled.")
  else:
    await member.send(embed=embed2)
    await channel.send(f"From: {member} {message}")
  def check(reaction, member):
    return member == member and str(reaction.emoji)== "<a:XMark:768095331555606528"

  try:
    reaction, member = await bot.wait_for('reaction_add', timeout=60.0, check=check)
  except asyncio.Timeout.Error:
    await member.send("You took too long. Command cancelled.")
  else:
    await member.send("Command promt cancelled.")
 

Ответ №1:

Правильный способ DM для пользователя — это .create_dm() метод. Поэтому при отправке ваших вложений у вас должно быть что-то более похожее на это.

 embedOne = discord.Embed(
    color = discord.Color.Blue()
)

embedOneadd_field(name = "Your support lays behind this bot.", value = "Do you need support?", inline = True)

userDM = ctx.author.create_dm()
embedOneMessage = await userDM.send(embed = embedOne)
 

Комментарии:

1. Это действительно работает для меня, но я столкнулся с той же проблемой при моей первой попытке. Для этого требуется сообщение в сообщении триггера, затем выполняется процесс отправки вам DMing перед отправкой сообщения.