From a1fe305b47d0c262d09ff1def460801201f297e6 Mon Sep 17 00:00:00 2001 From: MaheshtheDev Date: Sat, 22 Jun 2024 11:34:44 -0700 Subject: [PATCH] add: telegram bot setup with grammy lib --- apps/web/app/api/telegram/route.ts | 21 ++++ apps/web/package.json | 1 + package-lock.json | 162 ++++++++++++++++++++++++++++- 3 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 apps/web/app/api/telegram/route.ts diff --git a/apps/web/app/api/telegram/route.ts b/apps/web/app/api/telegram/route.ts new file mode 100644 index 00000000..0a140b40 --- /dev/null +++ b/apps/web/app/api/telegram/route.ts @@ -0,0 +1,21 @@ +import { Bot, webhookCallback } from "grammy"; +import { User } from "grammy/types"; + +export const runtime = "edge"; + +const token = process.env.TELEGRAM_BOT_TOKEN ?? ""; + +const bot = new Bot(token); + +bot.command("start", async (ctx) => { + const user: User = (await ctx.getAuthor()).user; + await ctx.reply(`Welcome to Supermemory bot, ${user.first_name}. I am here to help you remember things better.`); +}); + +bot.on("message", async (ctx) => { + await ctx.reply( + "Hi there! This is Supermemory bot. I am here to help you remember things better." + ); +}); + +export const POST = webhookCallback(bot, "std/http"); \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json index 19f77187..3681c1f4 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,6 +20,7 @@ "@radix-ui/react-popover": "^1.0.7", "@repo/ui": "*", "cmdk": "^1.0.0", + "grammy": "^1.25.1", "lowlight": "^3.1.0", "million": "^3.1.6", "next": "^14.1.1", diff --git a/package-lock.json b/package-lock.json index a94407a9..be53ca2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@auth/drizzle-adapter": "^1.1.0", "@aws-sdk/client-s3": "^3.577.0", "@aws-sdk/s3-request-presigner": "^3.577.0", - "@cloudflare/puppeteer": "^0.0.8", + "@cloudflare/puppeteer": "^0.0.11", "@headlessui/react": "^2.0.4", "@heroicons/react": "^2.1.3", "@hono/swagger-ui": "^0.2.2", @@ -37,6 +37,7 @@ "@tldraw/assets": "^2.2.0", "@types/readline-sync": "^1.4.8", "ai": "^3.1.14", + "aws4fetch": "^1.0.18", "cheerio": "^1.0.0-rc.12", "compromise": "^14.13.0", "drizzle-orm": "^0.30.10", @@ -50,6 +51,7 @@ "react-dropzone": "^14.2.3", "react-hook-form": "^7.51.5", "react-markdown": "^9.0.1", + "react-tweet": "^3.2.1", "rehype-highlight": "^7.0.0", "rehype-katex": "^7.0.0", "remark-gfm": "^4.0.0", @@ -63,7 +65,7 @@ "devDependencies": { "@clack/prompts": "^0.7.0", "@cloudflare/next-on-pages": "1", - "@cloudflare/workers-types": "^4.20240512.0", + "@cloudflare/workers-types": "^4.20240614.0", "@repo/eslint-config": "*", "@repo/tailwind-config": "*", "@repo/typescript-config": "*", @@ -2018,8 +2020,9 @@ } }, "node_modules/@cloudflare/puppeteer": { - "version": "0.0.8", - "license": "Apache-2.0", + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@cloudflare/puppeteer/-/puppeteer-0.0.11.tgz", + "integrity": "sha512-8tTiaSHqqVtfD3JeYmXLQlM6BdER3WvtrxCpuBtQXJeyd2H+1m9fWn35ed/lgsIjdSHT6CaCAIsDijwyV4RbyQ==", "dependencies": { "debug": "4.3.4", "devtools-protocol": "0.0.1019158", @@ -8149,6 +8152,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws4fetch": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/aws4fetch/-/aws4fetch-1.0.18.tgz", + "integrity": "sha512-3Cf+YaUl07p24MoQ46rFwulAmiyCwH2+1zw1ZyPAX5OtJ34Hh185DwB8y/qRLb6cYYYtSFJ9pthyLc0MD4e8sQ==" + }, "node_modules/axe-core": { "version": "4.7.0", "dev": true, @@ -17934,6 +17942,32 @@ } } }, + "node_modules/react-tweet": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-tweet/-/react-tweet-3.2.1.tgz", + "integrity": "sha512-dktP3RMuwRB4pnSDocKpSsW5Hq1IXRW6fONkHhxT5EBIXsKZzdQuI70qtub1XN2dtZdkJWWxfBm/Q+kN+vRYFA==", + "dependencies": { + "@swc/helpers": "^0.5.3", + "clsx": "^2.0.0", + "swr": "^2.2.4" + }, + "peerDependencies": { + "react": ">= 18.0.0", + "react-dom": ">= 18.0.0" + } + }, + "node_modules/react-tweet/node_modules/swr": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", + "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "license": "MIT", @@ -21419,6 +21453,126 @@ "react": "^18.2.0", "typescript": "^5.3.3" } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz", + "integrity": "sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } }