Skip to content

Burhanverse/postify

Repository files navigation

RSS-ify Bot

Postify

A Telegram channel management bot built with TypeScript, grammy, MongoDB & Agenda to manage your channel contents effortlessly!

GitHub commit activity Code quality GitHub stars GitHub forks

Features:

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

Roadmap (Upcoming Ideas):

  • Add support for shared-access to other channel admins
  • Improve text formating of the response messages.

Development:

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

Production Usage

To run Postify in production, first build the project:

npm run build

Then start the bot using:

npm start

This will run the compiled code from the dist directory.

Tests:

Run unit tests:

npm test

Text Formatting:

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> for strikethrough

Code & Quotes:

  • <code>inline code</code> for monospace
  • <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

About

An [ EXPERIMENTAL ] Telegram Channel Management Bot

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages