@gvnikolaev

Python телеграм канал как узнать данные юзеры который пишет текст?

По программе когда подписчик пишет любой текст данные сверяются с базой, это работает.
Как мне сделать так чтобы при ответе бота, бот написал данные подписчика (любые user_name итд)

Когда пишу так format(msg.chat.first_name) вывыдит на канале так: None вы выбрали id 1 такого айди не существует, выберите другой

когда пишу так: format(msg.from_user.first_name) выходит ошибка:
AttributeError: 'NoneType' object has no attribute 'first_name'


Прошу помочь, как правильно написать?

bot.get_updates(allowed_updates=["channel_post"])


@bot.channel_post_handler()
def hello(msg):
    for row in results:
        quality = row[0]
        id = row[1]     
        
        if  msg.text == str(id): 
            bot.send_message(idchannel, format(msg.from_user.id) +  'вы выбрали id {}'.format(msg.text) )
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
  1. Непонятно, зачем ты используешь bot.get_updates.
  2. Непонятно, зачем ты используешь bot.send_message, а не msg.answer.
  3. Непонятно, зачем ты используешь функцию format и метод .format, а не f-строки.


Вот мой вариант, попробуй.

from aiogram import Bot, Dispatcher, executor, types
from .config import BOT_TOKEN

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)


@dp.message_handler()
async def somehandler(msg: types.Message):
    if msg.text == "...":
        await msg.answer(f'@{msg.from_user.id}, вы выбрали {msg.text}')
    elif msg.text == '...':
        await msg.answer(f'@{msg.from_user.id}, вы выбрали {msg.text}')
    else:
        await msg.answer('Я не знаю такого варианта')


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы