我想提及那些d o没有用户名的用户。
如果用户设置了用户名,则返回
Hi @username
作为答案,但如果用户没有答案,我就不能这样做。
我尝试使用唯一的用户ID,例如
@5642166
但这没效果。
我怎样才能实现这一目标?
答案 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; 。