Я создаю Discord Bot, похожий на ModMail, но я столкнулся с ошибкой во время кодирования. Код:

   ​@bot.event
   ​async def on_message(message):
       ​if message.author.id == bot.user.id:
           ​return
   ​
       ​if message.author != message.author.bot:
           ​if not message.guild:
               ​embed= discord.Embed(color=discord.Color.blue())
               ​embed.add_field(name="AOS ModMail Support",
               ​value= (f"User Mention: {message.author.mention}\nUsername: {message.author}\nUser ID: {message.author.id}\n\n**Content**: {message.content}")
               ​await bot.get_guild(1111111111).get_channel(312312312324).
               ​send(embed=embed)

Когда я пишу боту в DM, мой терминал выглядит так:

await client.get_guild(832146513270145075).get_channel(841562259657850880).
    ^
SyntaxError: invalid syntax
0
IDK 11 Май 2021 в 13:32

1 ответ

Лучший ответ

Вы не можете сделать что-то вроде:

​await bot.get_guild(1111111111).get_channel(312312312324).
               ​send(embed=embed)

Если вы хотите, чтобы он работал, поместите все в одну строку

​await bot.get_guild(1111111111).get_channel(312312312324).send(embed=embed)

Но это не очень хорошая практика, вы должны получить гильдию / канал и отправить сообщение отдельными строками.

guild = bot.get_guild(...)
channel = guild.get_channel(...)
await channel.send(embed=embed)

Вы также можете использовать bot.get_channel для более короткого кода

channel = bot.get_channel(...)
await channel.send(embed=embed)

PS: если вы действительно хотите, чтобы он был разделен на две строки, как в вашем подходе, вы должны использовать обратную косую черту \ :

​await bot.get_guild(1111111111).get_channel(312312312324) \
    .send(embed=embed)
2
Łukasz Kwieciński 11 Май 2021 в 10:39