telegram - advanced-features

发布时间:2026/10/3 2:26:38
telegram - advanced-features 高级功能 - Telegram 机器人目录内联模式支付Telegram Stars迷你应用WebApps对话处理器FSM贴纸游戏Passport企业机器人Business Bots消息草稿流式输出内联模式允许用户在任何聊天中输入你的机器人 查询来使用机器人。启用与 BotFather 对话并发送/setinline。fromtelegramimportUpdate,InlineQueryResultArticle,InputTextMessageContentfromtelegram.extimportInlineQueryHandlerasyncdefinline_query(update:Update,context):queryupdate.inline_query.queryifnotquery:returnresults[InlineQueryResultArticle(id1,titlefResultado para:{query},input_message_contentInputTextMessageContent(message_textfVoce buscou:{query}),descriptionClique para enviar),InlineQueryResultArticle(id2,titleBusca em maiusculas,input_message_contentInputTextMessageContent(message_textquery.upper()))]awaitupdate.inline_query.answer(results,cache_time10)app.add_handler(InlineQueryHandler(inline_query))内联结果类型InlineQueryResultArticle- 通用文本InlineQueryResultPhoto- 带预览的照片InlineQueryResultGif- GIFInlineQueryResultVideo- 视频InlineQueryResultAudio- 音频InlineQueryResultDocument- 文档InlineQueryResultLocation- 位置InlineQueryResultVenue- 地点/场所InlineQueryResultContact- 联系人InlineQueryResultCachedPhoto- 已在 Telegram 服务器上的照片支付Telegram StarsTelegram 允许通过 Stars内部货币为数字商品进行支付。fromtelegramimportLabeledPrice# Enviar invoiceawaitbot.send_invoice(chat_idchat_id,titleAssinatura Premium,descriptionAcesso premium por 30 dias,payloadpremium_30days,currencyXTR,# XTR Telegram Starsprices[LabeledPrice(Assinatura Premium,100)],# 100 Stars)# Handler de pre-checkoutasyncdefprecheckout(update:Update,context):queryupdate.pre_checkout_queryifquery.invoice_payloadpremium_30days:awaitquery.answer(okTrue)else:awaitquery.answer(okFalse,error_messagePayload invalido)# Handler de pagamento concluidoasyncdefsuccessful_payment(update:Update,context):paymentupdate.message.successful_paymentawaitupdate.message.reply_text(fPagamento recebido!{payment.total_amount}Stars. fSeu acesso premium foi ativado.)app.add_handler(PreCheckoutQueryHandler(precheckout))app.add_handler(MessageHandler(filters.SUCCESSFUL_PAYMENT,successful_payment))外部支付提供商对于实物商品使用 Stripe、YooMoney 等提供商awaitbot.send_invoice(chat_idchat_id,titleCamiseta Bot Telegram,descriptionCamiseta tamanho M, algodao,payloadtshirt_m,provider_tokenSEU_PROVIDER_TOKEN,# do BotFathercurrencyBRL,prices[LabeledPrice(Camiseta,5990),# R$ 59.90 (em centavos)LabeledPrice(Frete,1500)# R$ 15.00],need_shipping_addressTrue,need_nameTrue,need_phone_numberTrue)迷你应用WebApps迷你应用是在 Telegram 内运行的 Web 应用。fromtelegramimportWebAppInfo,InlineKeyboardButton,InlineKeyboardMarkup# Botao que abre Mini AppkeyboardInlineKeyboardMarkup([[InlineKeyboardButton(Abrir App,web_appWebAppInfo(urlhttps://seu-app.com))]])awaitbot.send_message(chat_id,Clique para abrir:,reply_markupkeyboard)# Via Reply KeyboardfromtelegramimportReplyKeyboardMarkup,KeyboardButton keyboardReplyKeyboardMarkup([[KeyboardButton(Abrir App,web_appWebAppInfo(urlhttps://seu-app.com))]])接收迷你应用的数据asyncdefweb_app_data(update:Update,context):dataupdate.effective_message.web_app_data.data# data e uma string JSON enviada pelo Mini Appimportjson parsedjson.loads(data)awaitupdate.message.reply_text(fRecebi do app:{parsed})app.add_handler(MessageHandler(filters.StatusUpdate.WEB_APP_DATA,web_app_data))对话处理器FSM用于多步骤对话表单、向导fromtelegram.extimportConversationHandler,CommandHandler,MessageHandler,filters# EstadosNAME,AGE,CONFIRMrange(3)asyncdefstart_form(update:Update,context):awaitupdate.message.reply_text(Qual seu nome?)returnNAMEasyncdefget_name(update:Update,context):context.user_data[name]update.message.textawaitupdate.message.reply_text(Qual sua idade?)returnAGEasyncdefget_age(update:Update,context):context.user_data[age]update.message.text namecontext.user_data[name]agecontext.user_data[age]keyboardInlineKeyboardMarkup([[InlineKeyboardButton(Confirmar,callback_dataconfirm),InlineKeyboardButton(Cancelar,callback_datacancel)]])awaitupdate.message.reply_text(fNome:{name}\nIdade:{age}\n\nConfirma?,reply_markupkeyboard)returnCONFIRMasyncdefconfirm(update:Update,context):queryupdate.callback_queryawaitquery.answer()ifquery.dataconfirm:awaitquery.edit_message_text(Cadastro realizado com sucesso!)else:awaitquery.edit_message_text(Cadastro cancelado.)returnConversationHandler.ENDasyncdefcancel(update:Update,context):awaitupdate.message.reply_text(Operacao cancelada.)returnConversationHandler.END conv_handlerConversationHandler(entry_points[CommandHandler(cadastro,start_form)],states{NAME:[MessageHandler(filters.TEXT~filters.COMMAND,get_name)],AGE:[MessageHandler(filters.TEXT~filters.COMMAND,get_age)],CONFIRM:[CallbackQueryHandler(confirm)],},fallbacks[CommandHandler(cancel,cancel)],conversation_timeout300# 5 minutos timeout)app.add_handler(conv_handler)贴纸# Enviar sticker por file_idawaitbot.send_sticker(chat_id,stickerCAACAgIAAxkBAAI...)# Obter sticker setsticker_setawaitbot.get_sticker_set(set_name)forstickerinsticker_set.stickers:print(fEmoji:{sticker.emoji}, ID:{sticker.file_id})# Criar sticker set (requer imagem 512x512 PNG/WEBP)awaitbot.create_new_sticker_set(user_iduser_id,namemeupack_by_meubot,titleMeu Sticker Pack,stickers[InputSticker(stickeropen(sticker.webp,rb),emoji_list[],formatstatic)])# Adicionar sticker ao setawaitbot.add_sticker_to_set(user_iduser_id,namemeupack_by_meubot,stickerInputSticker(stickeropen(sticker2.webp,rb),emoji_list[],formatstatic))游戏# Enviar jogo (precisa registrar no BotFather com /newgame)awaitbot.send_game(chat_id,game_short_namemeu_jogo)# Handler de callback para jogoasyncdefgame_callback(update:Update,context):queryupdate.callback_queryawaitquery.answer(urlhttps://seu-jogo.com/?user_idstr(query.from_user.id))# Salvar scoreawaitbot.set_game_score(user_iduser_id,score150,chat_idchat_id,message_idgame_message_id)# Obter high scoresscoresawaitbot.get_game_high_scores(user_iduser_id,chat_idchat_id,message_idgame_message_id)企业机器人Business Bots用于 Telegram 企业账户的机器人# Receber conexao businessasyncdefbusiness_connection(update:Update,context):connupdate.business_connectionifconn.is_enabled:print(fBot conectado ao business de{conn.user.first_name})else:print(fBot desconectado do business de{conn.user.first_name})# Receber mensagens businessasyncdefbusiness_message(update:Update,context):msgupdate.business_message# Responder em nome do businessawaitcontext.bot.send_message(chat_idmsg.chat.id,textObrigado pela mensagem! Responderemos em breve.,business_connection_idmsg.business_connection_id)app.add_handler(BusinessConnectionHandler(business_connection))app.add_handler(BusinessMessagesHandler(business_message))消息草稿流式输出对于较长的回复如 AI 的回复使用草稿提供实时反馈importrequests TOKENSEU_TOKENBASEfhttps://api.telegram.org/bot{TOKEN}defstream_response(chat_id,full_text):Simula streaming enviando drafts parciais.wordsfull_text.split()partial# Enviar draft inicialfori,wordinenumerate(words):partialword ifi%50:# Atualizar a cada 5 palavrasrequests.post(f{BASE}/sendMessageDraft,json{chat_id:chat_id,text:partial.strip()...})# Enviar mensagem finalrequests.post(f{BASE}/sendMessage,json{chat_id:chat_id,text:full_text})注意sendMessageDraft是一个较新的方法。请在你使用的 API 版本中检查其可用性。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询