Как получить имя пользователя по реплаю в aiogram?
У меня есть код, где пользователь может сделать рп-команду, реплая пользователя (отвечая на его сообщение), как получить информацию об этом участнике (например fitst_name)? Ещё хотелось бы реализовать получение фамилии по ID, например что бы пользователь писал "РП пожал руку @username" и бот получал фамилию с этого username (примерно так: Сергей пожал руку Влад) Код:
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from random import randint as ri
@dp.message_handler(content_types='text')
async def new_message(message: types.Message):
if 'РП' in message.text:
args = message.text.split()
await message.reply(message.from_user.first_name, args[1]) #тут что-то делать
if __name__ == '__main__':
executor.start_polling(dp)
Ответы (4 шт):
UPD:
Вот наверное то, что вы хотели. Подробнее описал вот тут:
@dp.message_handler(commands="handshake")
async def send_handshake(message: types.Message):
your_id = message.from_id
your_name = message.from_user.username
try:
friend_name = message.reply_to_message.from_user.username
friend_id = message.reply_to_message.from_user.id
# await message.delete()
await message.answer(f'[{your_name}](tg://user?id={str(your_id)}) пожал руку [{friend_name}](tg://user?id={str(friend_id)})', parse_mode="Markdown")
except:
# await message.delete()
await message.answer(f'[{your_name}](tg://user?id={str(your_id)}) жмет руку всем', parse_mode="Markdown")
А это результат работы бота:
Узнать имя пользователя, на чьё сообщение мы ответили:
message.reply_to_message.from_user.first_name
Увы, но на второй вопрос ответа я не нашёл
msg.from_user.first_name
ровно точно так же как
msg.from_user.id
и
msg.from_user.username
msg или message зависит от того, что в скробках у асинх деф
@dp.message_handler(commands="handshake")
async def send_handshake(***message***: types.Message):
по поводу второго вопроса. попробуйте создать бота, с хэндлером- перехватывающим нужное вам сообщение, отправте это сообщение, и print'ом посмотреть как текстово это сообщение выглядит. возможно, тг на своём системном языке сообщает чьё сообщение пересылается.
