Как отправить сообщение видимое одному человеку? discord.py
Я ранее уже задавал этот вопрос но так и не получил на него нормального ответа, скорее всего меня не поняли.
Как отправить такое сообщение в discord.py?:

UPD:
В данном случае мне надо отправить это сообщение в on_raw_reaction_add:
@bot.event
async def on_raw_reaction_add(payload):
global not_active
global post_id
print('---Зафиксирована реакция---')
if payload.message_id == post_id:
channel = bot.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
user = discord.utils.get(message.guild.members, id=payload.user_id)
print(f'-----{user.name} отметился-----')
not_active.remove(user.mention)
config['DEFAULT']['not_active'] = f'{" ".join(not_active)}'
with open('settings.ini', 'w') as configfile:
config.write(configfile)
Ответы (1 шт):
Автор решения: biflé
→ Ссылка
В функции send() включите параметр ephemeral=True. Это пришлёт именно такое сообщение. Пример:
await ctx.send('Привет!', ephemeral=True)
UPD:
Через некоторое тестирование выяснилось, что discord не позволяет отвечать 'невидимыми' сообщениями на обычные комманды. Для slash-комманд и кнопок все работает прекрасно.
Пример кода:
import asyncio
import discord
from discord.ext import commands
class Handlers(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
@commands.hybrid_command('test')
async def test(self, ctx: commands.Context):
await ctx.send('test', ephemeral=True)
client = commands.Bot(
command_prefix='!',
intents=discord.Intents.all(),
case_insensitive=True,
)
@client.event
async def on_ready():
await client.tree.sync()
asyncio.run(client.add_cog(Handlers(client)))
client.run('token')
(Код грустный, тут только для демонстрации примера)
Обратите внимание на версию discord.py! Для этого примера discord == 2.1.0.