我试图让我的电报机器人提及用户的电报谁没有用户名,并希望提及他们使用用户ID。下面是我的python代码。。它不会标记那些没有用户名的用户。
def welcome(update, context, new_member):
# Greets a person who joins the chat
message = update.message
chat_id = message.chat.id
if new_member.username is None:
username = "["+new_member.first_name+"](tg://user?id="+str(new_member.id)+")"
else:
username = new_member.username
logger.info(
"%s joined to chat %d (%s)",
escape(username),
chat_id,
escape(message.chat.title),
)
text = (
f"Hello @{username}! Welcome to the {message.chat.title} "
"telegram group!\n"
"Please introduce yourself."
)
context.bot.send_message(chat_id=chat_id, text=text)
根据链接:可以通过带有标记的数字id提及用户:Markdown样式
要使用此模式,请在使用sendMessage时在parse_mode字段中传递Markdown。在消息中使用以下语法:
内联提及用户
我无法将其应用到我的代码中并使其工作。有人能帮我吗?该功能已在此处成功应用
https://github.com/domdorn/telegram/commit/ea308cadb739a9a018c7fbabc16824e2ff82d415
我想在我的代码中应用相同的方法,以便它会提到没有用户名和ID的用户。
您必须指定解析模式=电报。解析模式。标记或send\u message
方法中的parse\u mode='MARKDOWN'。您编辑的代码应如下所示:
def welcome(update, context, new_member):
# Greets a person who joins the chat
message = update.message
chat_id = message.chat.id
if new_member.username is None:
username = "["+new_member.first_name+"](tg://user?id="+str(new_member.id)+")"
else:
username = new_member.username
logger.info(
"%s joined to chat %d (%s)",
escape(username),
chat_id,
escape(message.chat.title),
)
text = (
f"Hello @{username}! Welcome to the {message.chat.title} "
"telegram group!\n"
"Please introduce yourself."
)
context.bot.send_message(
chat_id=chat_id,
text=text,
parse_mode=telegram.ParseMode.MARKDOWN,
)
您也可以使用HTML或MARKDOWN\u V2。
链接到留档和完整信息:
https://python-telegram-bot.readthedocs.io/en/stable/telegram.parsemode.html#telegram.ParseModehttps://core.telegram.org/bots/api#formatting-options
提高代码质量和简化代码的提示(我认为您正在使用python Telegrame bot):
*
。外部导入*
您应该指定parse\u mode参数:
context.bot.send_message(
chat_id=chat_id,
text=text,
parse_mode='markdown',
)
顺便说一句,当您使用内联链接时,没有必要写“@”。
此外,我建议您使用电报文本模块来编写指向用户的链接:
from telegram_text import InlineUser, User
def welcome(update, context, new_member):
...
if new_member.username is None:
user = InlineUser(new_member.first_name, new_member.id)
else:
user = User(new_member.username)
text = (
f"Hello {user}! Welcome to the {message.chat.title} "
"telegram group!\n"
"Please introduce yourself."
)