tg-builder
TypeScript icon, indicating that this package has built-in type declarations

0.1.17 • Public • Published

🤖TG Builder

tg-builder provides an intuitive builder pattern that allows developers to:

  • Combine Multiple Bots: Run and manage several bots from a single codebase, each with their individual or shared functionalities.
  • Shared Logic: Easily reuse logic across different bots, making your code more DRY (Don't Repeat Yourself).
  • Modularity: Break down complex bot functionalities into manageable pieces, ensuring clean and readable code.
  • Scalability: As your bot ecosystem grows, tg-builder scales with you, making it effortless to add or modify existing bots.

By adopting the builder pattern, tg-builder ensures your bots are more maintainable, organized, and efficient.

📦 Installation

Using npm:

npm install tg-builder

Using yarn:

yarn add tg-builder

⚙️ Configuration

Before you start, you need to create a configuration file named tg.json in your project's root. This file should contain the token and name of the bot you want to set up.

{
  "bots": [
    {
      "token": "xxxxxxxxxxxxxxxxxxxx",
      "name": "GreyewiRogueBot"
    },
    {
      "token": "xxxxxxxxxxxxxxxxxxxx",
      "name": "GreyewiRogueBot"
    }
  ]
}

Replace xxxxxxxxxxxxxxxxxxxx with your actual bot tokens.

🛑 Remember, always keep your bot tokens secret and never expose them in publicly accessible places or repositories.

📖 Getting Started

1. Importing Modules

Begin by importing the essential modules:

import { BotsLoader, CommandBuilder, ActionBuilder } from 'tg-builder'

2. Defining Commands

Leverage the CommandBuilder to define the commands for your bot:

const gameCommands = (botName: string) =>
new CommandBuilder(botName).setNewCommand('start', async (ctx) => {
    //... command logic here ...
});

3. Defining Actions

Utilize the ActionBuilder to define telegram callback actions:

const gameActions = (botName: string) =>
    new ActionBuilder(botName)
    .setNewAction('new-game', async (ctx: any) => {
        //... action logic here ...
});

4. Loading and Launching the Bot

Make use of BotsLoader to add your bot and get it running:

const loader = new BotsLoader();
loader.addBot(name, gameCommands, gameActions);

loader.launch((err) => {
    if (!err) {
        console.log(`${name} is working`);
    } else {
        console.error(err);
    }
});

🚀 Example

Here's a glimpse of a bot providing a text-based RPG game experience:

import { BotsLoader, CommandBuilder, ActionBuilder } from 'tg-builder'

const name = "GreyewiRogueBot"
const gameCommands = (botName: string) =>
  new CommandBuilder(botName).setNewCommand('start', async (ctx) => {
      await ctx.reply(`You are welcome in super text tg rpg game!:`, {
        parse_mode: 'HTML',
        reply_markup: {
          inline_keyboard: [
            [
              {
                text: 'Start',
                callback_data: 'new-game',
              },
              {
                text: 'Continue',
                callback_data: 'loading',
              },
              {
                text: 'Options',
                callback_data: 'settings',
              },
            ],
          ],
        },
      })
  })

const gameActions = (botName: string) =>
  new ActionBuilder(botName)
    .setNewAction('new-game', async (ctx: any) => {
      return ctx.reply('Coming soon')
    })
    .setNewAction('loading', async (ctx: any) => {
      return ctx.reply('Coming soon')
    })
    .setNewAction('settings', async (ctx: any) => {
      return ctx.reply('Coming soon')
    })

const loader = new BotsLoader()
loader.addBot(name, gameCommands, gameActions)

loader.launch((err) => {
  if (!err) {
    console.log(`${name} is working`)
  } else {
    console.error(err)
  }
})

📄 Definitions

1. Command

Property Type Description
command string The command name to be recognized by the bot.
callback (ctx: Context) => void The callback function executed when the command is called.
botName string Name of the bot the command belongs to.

2. Action

Property Type Description
action string The action identifier.
callback (ctx: Context) => void The callback function executed when the action is triggered.
botName string Name of the bot the action belongs to.

With tg-builder, bot development becomes a structured, readable, and maintainable endeavor. Dive in to explore more functionalities and elevate your bot development journey!

Package Sidebar

Install

npm i tg-builder

Weekly Downloads

1

Version

0.1.17

License

ISC

Unpacked Size

34.8 kB

Total Files

7

Last publish

Collaborators

  • greyewi