A Telegram channel management bot built with TypeScript, grammy, MongoDB & Agenda to manage your channel contents effortlessly!
| Area | Status |
|---|---|
| Channel connection (public & private) | Implemented |
| Permission checks (admin rights) | Basic (post rights) |
| Multiple channels per user | Implemented |
| Draft creation (text, media, buttons) | Implemented |
| Inline buttons (no counters) | Implemented |
| Scheduling (presets + custom) | Implemented |
| Timezone preferences | Implemented |
| Queues (scheduled list) | Implemented |
| Send/Schedule & Pin the post | Implemented |
| Link personal bot | Implemented |
- Add support for shared-access to other channel admins
- Improve text formating of the response messages.
Create a .env file:
BOT_TOKEN=123456:ABC...
MONGODB_URI=mongodb://localhost:27017/postify
DB_NAME=postify
ENCRYPTION_KEY=
LOG_LEVEL=debug
Encryption: Provide ENCRYPTION_KEY (32‑byte hex or base64). Tokens are stored with AES‑256‑GCM in tokenEncrypted.
If ENCRYPTION_KEY is absent, an ephemeral key is used (NOT for production) and tokens become unreadable after restart.
Install deps and run in dev mode:
npm install
npm run dev
To run Postify in production, first build the project:
npm run buildThen start the bot using:
npm startThis will run the compiled code from the dist directory.
Run unit tests:
npm test
Postify supports rich text formatting using all Telegram HTML tags:
Basic Formatting:
<b>bold</b>or<strong>bold</strong>for bold<i>italic</i>or<em>italic</em>for italic<u>underline</u>or<ins>underline</ins>for underline<s>strikethrough</s>or<del>strikethrough</del>forstrikethrough
Code & Quotes:
<code>inline code</code>formonospace<pre>code block</pre>for code blocks<pre><code class="language-python">code</code></pre>for syntax-highlighted code<blockquote>quoted text</blockquote>for quotes
Links & Special:
<a href="https://example.com">link text</a>for hyperlinks<tg-spoiler>spoiler</tg-spoiler>or<span class="tg-spoiler">spoiler</span>for spoilers<tg-emoji emoji-id="12345">emoji</tg-emoji>for custom emoji
Media Support:
- Photos, videos, and GIFs are auto-detected when uploaded
Example:
<b>Hello</b> <i>world</i>! Here's some <code>code</code>:
<pre><code class="language-javascript">
function hello() {
console.log("Hello world!");
}</code></pre>
Check out <a href="https://github.com">GitHub</a> for more!
<tg-spoiler>This is a hidden spoiler</tg-spoiler>
}
</pre>
<blockquote>This is a quote</blockquote>
Made with ❤️ by Burhanverse
