telegram mini app和game實現登錄功能

接上一篇文章,我們在創建好telegram機器人后,開始開發小游戲或者mini App,那就避免不了登錄功能。

公開鏈接
bot設置教程:https://lengmo714.top/6e79860b.html
參考教程參考教程,telegram已經給我們提供非常多的api,我們在獲取用戶信息的時候只需要調用對應的api即可。

拉起登錄

我這里主要是獲取頭像、id、名字和狀態。
用到2個api,getChatMembergetUserProfilePhotos
用法分別如下:
獲取頭像:

  // 初始化頭像URL為空字符串let photoUrl = '';try {// 獲取頭像const profilePhotos = await bot.api.getUserProfilePhotos(userId, { limit: 1 });if (profilePhotos.total_count > 0) {const fileId = profilePhotos.photos[0][0].file_id;const file = await bot.api.getFile(fileId);photoUrl = `https://api.telegram.org/file/bot${TOKEN}/${file.file_path}`;}} catch (error) {console.error("獲取頭像失敗: ", error);}

獲取登錄id:

  let userInfo = '';let id = "";let name = "";try {const chatMember = await bot.api.getChatMember(ctx.chat.id, userId);id = chatMember.user.id;name = chatMember.user.first_name;userInfo = `信息:\nID: ${chatMember.user.id}\n名字: ${chatMember.user.first_name}\n用戶名: ${chatMember.user.username}\n狀態: ${chatMember.status}`;} catch (error) {console.error("獲取信息失敗: ", error);}if (photoUrl) {await ctx.reply(`頭像鏈接: ${photoUrl}`);} else {await ctx.reply("未能獲取頭像。");}await ctx.reply(userInfo || "未能獲取信息。");

完整代碼

import { Bot, InlineKeyboard } from "https://deno.land/x/grammy@v1.25.0/mod.ts";const TOKEN = '';  // bot機器人的token
const bot = new Bot(TOKEN);// 處理 /start 命令
bot.command("start", async (ctx) => {const firstName = ctx.update.message.from.first_name;const userId = ctx.from.id;// 初始化頭像URL為空字符串let photoUrl = '';try {// 獲取頭像信息const profilePhotos = await bot.api.getUserProfilePhotos(userId, { limit: 1 });if (profilePhotos.total_count > 0) {const fileId = profilePhotos.photos[0][0].file_id;const file = await bot.api.getFile(fileId);photoUrl = `https://api.telegram.org/file/bot${TOKEN}/${file.file_path}`;}} catch (error) {console.error("獲取頭像失敗: ", error);}// 獲取用戶登錄信息let userInfo = '';let id = "";let name = "";try {const chatMember = await bot.api.getChatMember(ctx.chat.id, userId);id = chatMember.user.id;name = chatMember.user.first_name;userInfo = `信息:\nID: ${chatMember.user.id}\n名字: ${chatMember.user.first_name}\n用戶名: ${chatMember.user.username}\n狀態: ${chatMember.status}`;} catch (error) {console.error("獲取信息失敗: ", error);}if (photoUrl) {await ctx.reply(`頭像鏈接: ${photoUrl}`);} else {await ctx.reply("未能獲取頭像。");}await ctx.reply(userInfo || "未能獲取信息。");
});// 啟動機器人
bot.start();

運行代碼看先現象

執行下面命令,運動代碼

deno run --allow-net ts腳本.ts

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39681.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

package.json配置詳解

package.json文件 執行 npm init 命令,會在當前目錄生成一個 package.json 文件 這個文檔是你需要知道的關于你的 package.json 文件中需要什么的所有信息。它必須是實際的 JSON,而不僅僅是一個 JavaScript 對象文字。 //package.json {//如果你打算發…

使用vue動態給同一個a標簽添加內容 并給a標簽設置hover,懸浮文字變色,結果鼠標懸浮有的字上面不變色

如果Vue的虛擬DOM更新機制導致樣式更新不及時,你可以嘗試以下幾種方法來解決這個問題: 確保使用響應式數據: 確保你使用的數據是響應式的,并且任何對這些數據的更改都會觸發視圖的更新。在Vue中,你應該使用data對象中的…

多源BFS——AcWing 173. 矩陣距離

多源BFS 定義 多源BFS(多源廣度優先搜索)是一種圖遍歷算法,它是標準BFS(廣度優先搜索)的擴展,主要用于解決具有多個起始節點的最短路徑問題。在多源BFS中,不是從單一源點開始搜索整個圖&#…

怎么把webp格式轉換成jpg?5個圖片格式轉換方法全面解析(2024最新)

webp 圖片常用于網站,可顯著改善頁面的瀏覽和加載體驗。然而,許多設備(如蘋果手機設備、安卓手機等)不支持webp文件。在這些設備上查看webp文件時,最佳做法是將其轉換為其他常見格式,如jpg或 png。Windows電…

LeetCode 69. x 的平方根

更多題解盡在 https://sugar.matrixlab.dev/algorithm 每日更新。 組隊打卡&#xff0c;更多解法等你一起來參與哦&#xff01; LeetCode 69. x 的平方根 &#xff0c;難度簡單。 暴力 解題思路&#xff1a;直接遍歷平方 i&#xff0c; 判斷 x 是否滿足 i 2 ≤ x < ( i …

2024上海大學生程序設計競賽I-六元組計數原根知識詳解

以前基本沒有了解原根相關的一塊內容&#xff0c;最近正好碰到了這個題&#xff0c;于是寫一篇博客記錄一下。 這道題的總體思路就是比較明顯&#xff0c;就是先算出 a p x a^px apx對于每個 x x x的解的個數&#xff0c;然后NTT算一下即可。 先來講一下怎么求歐拉函數 ? ( …

前端FCP指標優化

優化前 第三方依賴按需引入之后&#xff0c;打包的總體積減小到初始值的55%&#xff0c;但是依然存在很大的js文件&#xff0c;需要繼續優化 chunk-vendors.js進行分包之后 截圖 compression-webpack-plugin壓縮之后 截圖

簡單制作基礎的Python鏡像

拉取基礎鏡像 以Ubuntu24示例 docker pull ubuntu:24.04 啟動 docker run -it -d --name ubuntu24 ubuntu:24.04 進入docker docker exec -it ubuntu24 /bin/bash 更新依賴 apt update apt full-upgrade 安裝pip 會自動安裝python3.11.7 apt install pip 支持中文…

55、Flink 中使用 Java Lambda 表達式詳解

1&#xff09;概述 1.注意 Flink 支持對 Java API 的所有算子使用 Lambda 表達式&#xff0c;但是&#xff0c;當 Lambda 表達式使用 Java 泛型時&#xff0c;需要 顯式 地聲明類型信息。 2.示例和限制 示例&#xff1a; map() 函數使用 Lambda 表達式計算輸入值的平方。 …

大學新生人工智能學習路線規劃

1. 引言 七月來臨&#xff0c;各省高考分數已揭榜完成。而高考的完結并不意味著學習的結束&#xff0c;而是新旅程的開始。對于有志于踏入IT領域的高考少年們&#xff0c;這個假期是開啟探索IT世界的絕佳時機。作為該領域的前行者和經驗前輩&#xff0c;我愿意為準新生們提供一…

基于Hadoop平臺的電信客服數據的處理與分析③項目開發:搭建基于Hadoop的全分布式集群---任務10:Hive安裝部署

任務描述 任務內容為安裝并配置在Hadoop集群中使用Hive。 任務指導 Hive是一個基于Hadoop的數據倉庫框架&#xff0c;在實際使用時需要將元數據存儲在數據庫中 具體安裝步驟如下&#xff1a; 1. 安裝MySQL數據庫&#xff08;已安裝&#xff09; 2. 解壓縮Hive的壓縮包 3…

剪映 v5.5 Pro Vip解鎖版:使用指南與注意事項

摘要&#xff1a;本文介紹了剪映Pro VIP解鎖版的使用方法&#xff0c;包括安裝、測試和使用VIP素材的步驟&#xff0c;以及如何避免誤報和保持解鎖狀態的建議。 正文&#xff1a; 剪映Pro是一款廣受歡迎的視頻編輯軟件&#xff0c;提供了豐富的視頻編輯功能和大量高質量的素材…

發送微信消息和文件

參考&#xff1a;https://www.bilibili.com/video/BV1S84y1m7xd 安裝&#xff1a; pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件傳輸助手", message"你好&#xff0c;我是PyOfficeRobot&#xff0c;有什么可以幫助…

RabbitMQ中java實現隊列和交換機的聲明

java實現隊列和交換機的聲明 在之前我們都是基于RabbitMQ控制臺來創建隊列、交換機。但是在實際開發時&#xff0c;隊列和交換機是程序員定義的&#xff0c;將來項目上線&#xff0c;又要交給運維去創建。那么程序員就需要把程序中運行的所有隊列和交換機都寫下來&#xff0c;…

【PYG】 PyTorch中size方法和屬性

在 PyTorch 中&#xff0c;size 方法和屬性用于獲取張量的維度信息。下面是它們的用法和區別&#xff1a; node_features.size&#xff1a; 這是一個屬性&#xff08;attribute &#xff09;&#xff0c;返回一個 torch.Size 對象&#xff0c;表示張量的維度。這是不可調用的&a…

用MySQL+node+vue做一個學生信息管理系統(一):配置項目

先用npm init -y生成配置文件 在項目下新建src文件夾&#xff0c;app.js文件。src目錄用來放靜態資源文件&#xff0c;app.js是服務器文件&#xff0c;index.js是vue的入口文件 使用npm install express下載express框架 在app.js文件夾開啟node服務&#xff0c;監聽的端口為…

C++ //練習 14.29 為什么不定義const版本的遞增和遞減運算符?

C Primer&#xff08;第5版&#xff09; 練習 14.29 練習 14.29 為什么不定義const版本的遞增和遞減運算符&#xff1f; 環境&#xff1a;Linux Ubuntu&#xff08;云服務器&#xff09; 工具&#xff1a;vim 解釋&#xff1a; 遞增和遞減要改變對象本身&#xff0c;const類…

Go語言--運算符

算術運算符 關系運算符 不能寫0<a<10&#xff0c;要判斷必須0<a&&a<10。因為int和bool不兼容 邏輯運算符 位運算符 賦值運算符 其他 運算符的優先級

AcWing 1254:找樹根和孩子

【題目來源】https://www.acwing.com/problem/content/1256/【題目描述】 給定一棵樹&#xff0c;輸出樹的根root&#xff0c;孩子最多的結點max以及他的孩子。【輸入格式】 第一行&#xff1a;n&#xff0c;m&#xff0c;表示樹的節點數和邊數。 以下m行&#xff1a;每行兩個結…

浮點數在內存中的存儲結構

浮點數在內存中的存儲可以參考《IEEE754標準》https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF 參考博文&#xff1a;IEEE754詳解&#xff08;最詳細簡單有趣味的介紹&#xff09;-CSDN博客 單精度float占內存4字節&#xff0c;最高位bit31表示符號位&…