如何在没有用户名的情况下提及Telegram用户?

时间:2016-12-01 08:38:03

标签: php telegram telegram-bot php-telegram-bot

我想提及那些d o没有用户名的用户

如果用户设置了用户名,则返回

Hi @username 

作为答案,但如果用户没有答案,我就不能这样做。

我尝试使用唯一的用户ID,例如

@5642166

但这没效果。

我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:3)

根据official documentation,可以通过带有标记的数字ID来提及用户:

  

降价样式

     

要使用此模式,请在parse_mode字段中传递Markdown   使用sendMessage时。在您的消息中使用以下语法:

[inline mention of a user](tg://user?id=123456789)

,您还可以使用HTML样式:

  

HTML样式

     

要使用此模式,请在使用sendMessage时在parse_mode字段中传递HTML。当前支持以下标签:

<a href="tg://user?id=123456789">inline mention of a user</a>

答案 1 :(得分:-2)

在我给你答案之前,我建议您使用用户的 first_name 属性。如果您有Telegram帐户,则不需要用户名,但您必须输入名称。

以下是我如何获得用户的 first_name 属性的代码示例:

$rawContent = file_get_contents("php://input");
$rawContentArray = json_decode($rawContent, true); 

foreach ($rawContentArray as $key => $value) {
    if($key === "message"){
        foreach ($value as $messagekey => $messagevalue) {
            if($messagekey === "chat"){
                foreach ($messagevalue as $chatkey => $chatvalue) {
                    if($chatkey === "first_name"){
                        $first_name = $chatvalue;
                    }
                }
            }
        }
    }
}

如果您想获取用户名,您可以执行相同操作,只需将 first_name 替换为用户名,然后在提供 $ user_name 一个值:

if($user_name !== ''){
$user_name = "@undefined"}

这里的问题是你必须给用户一个占位符或通用用户名,当你想到它时这是一种愚蠢的用法。您正在给使用您的机器人的人一个名字。为什么这样?但如果这就是您想要的,请用占位符替换&#34; @ undefined&#34;