Дело в том, что я хочу, чтобы когда я удалял чьё-то сообщение у меня сохранялся об этом лог на сервере. Использую для написания своего бота библиотеку nextcord и хотелось бы, чтобы бот мог удалить сообщение, на которое я "ответил". По сути я хочу отправлять команду в ответ сообщения, которое я хочу удалить с причиной удаления. Как мне это реализовать? Все варианты, которые я перепробовал были тщетны.
Проблема в том, что мне пишет, что данный атрибут не поддерживается в Application Commands. Уже какие только я атрибуты не перепробовал, но все мимо.
Я хотел это добавить как слеш команду, но видать вообще не вариант. Написал следующее:
@bot.slash_command(description="Удаляет сообщение, на которое вы отвечаете.")
async def msg_delete(interaction: nextcord.Interaction, message: nextcord.MessageReference, reason: str):
if not interaction.user.guild_permissions.administrator:
await interaction.response.send_message("Вы не являетесь администратором, "
"потому вы не можете использовать эту команду!", ephemeral=True)
else:
await interaction.response.send_message("Сообщение было удалено!")
if logging is True:
log_channel = bot.get_channel(logsChannel)
msg = nextcord.Message(message)
await log_channel.send(f"{msg.author.mention} отправил очень плохое сообщение! Но админ"
f" {interaction.user.mention} успешно его удалил! Причина: {reason}")
await msg.delete()
Проглядел точку в написанном вами сообщении, исправил, но положение лучше от этого не стало.
@bot.slash_command(description="Удаляет сообщение, на которое вы отвечаете.")
async def msg_delete(interaction: nextcord.Interaction, message: nextcord.Message.reference, reason: str):
if not interaction.user.guild_permissions.administrator:
await interaction.response.send_message("Вы не являетесь администратором, "
"потому вы не можете использовать эту команду!", ephemeral=True)
else:
await interaction.response.send_message("Сообщение было удалено!")
if logging is True:
log_channel = bot.get_channel(logsChannel)
await log_channel.send(f"{message.author.mention} отправил очень плохое сообщение! Но админ"
f" {interaction.user.mention} успешно его удалил! Причина: {reason}")
await message.delete()
firexrwt, сообщение лежит во взаимодействии, а не передается как аргумент.
Из interaction читаете message -> из него читаете reference -> удаляете его.
firexrwt, не ставьте тайпхинты, если не понимаете что это и зачем.
Объявление функции должно быть следующим, перечитайте сообщения выше и заполните пропуски.