Получать сообщения от пользователя и отвечать ему. Проблема с получением username'а пользователя. Telebot (feedbackbot)
Использую данного бота. Он меня полностью устраивает, но хотелось бы сделать так, чтобы при получении сообщения от пользователя, также отображался его username, а не только ID в виде циферок.
В файле user_message.py пробую поменять вот это:
sync def user_text_message(message: Message, bot: AsyncTeleBot):
"""
Handles messages sent by user.
Then sends the message to models.Admin.ADMIN.
This handler only detects text messages.
"""
await bot.send_message(
chat_id=Admin.ADMIN.value, text=f'#{str(message.chat.id)}\nMessage: {message.text}')
На это:
async def user_text_message(message: Message, bot: AsyncTeleBot):
"""
Handles messages sent by user.
Then sends the message to models.Admin.ADMIN.
This handler only detects text messages.
"""
# Get the user's username
username = message.from_user.username
# Send the message to the recipient, along with the user's username and ID
await bot.send_message(
chat_id=Admin.ADMIN.value,
text=formatting.format_text(
f'From @{username} ({message.chat.id})',
'Message:',
formatting.hitalic(message.text)
),
parse_mode='HTML'
)
Но в результате после получения от пользователя не могу ему ответить через reply, хотя сообщение и приходит уже с указанием его юзернейма. Получаю отбивку 'Please reply to a user's message'уже из файла admin.py.
from tgbot.utils.extract_id import extract_id
async def admin_user(message: Message, bot: AsyncTeleBot):
"""
Send the message to the admin.
"""
user_id = extract_id(message.reply_to_message.text if message.reply_to_message.text else message.reply_to_message.caption)
if not user_id:
await bot.reply_to(
message,
text='Please reply to a user\'s message.'
Как убрать зависимость от message.chat.id, ну или просто добавить username поользователя, чтобы взлетело?