代码之家  ›  专栏  ›  技术社区  ›  Sundararajan

如何在Telegram Bot中获取用户名?

  •  12
  • Sundararajan  · 技术社区  · 7 年前

    我在电报机器人里和一个管理员一起工作。我需要在用户使用该命令后获取用户名或用户id。

    我的密码

    import telebot  #Telegram Bot API
        
    bot = telebot.TeleBot(<BotToken>)
        
    @bot.message_handler(commands=['info'])
    def send_welcome(message):
        name = bot.get_me()
        print(name)
        bot.reply_to(message, "Welcome")
    
    bot.polling()
    

    然而,我只得到有关机器人的信息。我无法检索有关使用处理程序的用户的信息。

    输出

    {'first_name': 'SPIOTSYSTEMS', 'id': 581614234, 'username': 'spiotsystems_bot', 'is_bot': True, 'last_name': None, 'language_code': None}
    

    如何获取用户id或使用 info 命令 我该用哪种方法?请告知。

    注:

    我的机器人与电报组相连。出于安全考虑,我已经从MVC中删除了电报令牌。

    3 回复  |  直到 3 年前
        1
  •  22
  •   Shadow    7 年前

    这个 getMe() 您使用的功能是获取有关机器人的信息。但您需要发送消息的人的姓名。

    message API,有一个 from 属性( from_user 在python中)包含 User 对象,其中包含发送消息的人的详细信息。

    所以你会有更多的运气,比如 name = message.from_user.first_name .

        2
  •  4
  •   Michael K    4 年前

    试试这个:

    message.from_user.id
    message.from_user.first_name
    message.from_user.last_name
    message.from_user.username
    

    或者读一下 https://core.telegram.org/bots/api#user

        3
  •  2
  •   DogEatDog    3 年前

    访问用户的 first_name 通过 message param与具有 Message 对象,然后可以访问 Chat 对象,通过 message.chat.first_name ,如下例所示 greet 方法:

    @bot.message_handler(commands=['Start'])
    def greet(message):
      user_first_name = str(message.chat.first_name) 
      bot.reply_to(message, f"Hey! {user_first_name} \n Welcome To The...")
    
    推荐文章