telegram-base-bot/Readme.org

131 lines
3.6 KiB
Org Mode

#+Author: Maximo Tejeda
#+Email: root@maximotejeda.com
#+Date: 10/10/2024
* Telegram Bot Repository Template
This README serves as a guide and template for setting up new Telegram bot projects. Follow the
instructions below to get your bot up and running.
** Table of Contents
- [[#introduction][Introduction]]
- [[#prerequisites][Prerequisites]]
- [[#setup-instructions][Setup Instructions]]
- [[#clone-the-repository][Clone the Repository]]
- [[#install-dependencies][Install Dependencies]]
- [[#configure-your-bot][Configure Your Bot]]
- [[#running-the-bot][Running the Bot]]
- [[#Description][Description]]
** Introduction
<<Introduction>>
This repository contains a basic template for developing Telegram bots. It includes essential
scripts, configuration files, and documentation to help you get started quickly.
** Prerequisites
<<Prerequisites>>
Before setting up your bot, ensure you have the following installed:
- *go*: The go programming for running go code.
- *Telegram Bot Token*: Obtain it by creating a new bot via [[https://t.me/botfather][BotFather]] on
Telegram.
** Setup Instructions
<<Setup Instructions>>
*** Clone the Repository
To get started, clone this repository to your local machine:
#+BEGIN_SRC bash
git clone https://github.com/yourusername/telegram-bot-template.git
cd telegram-bot-template
#+END_SRC
*** Install Dependencies
Install all required dependencies using go tools:
#+BEGIN_SRC bash
go mod tidy
#+END_SRC
*** Configure Your Bot
Create a ~.env~ file in the root directory and add your Telegram bot token:
#+BEGIN_SRC plaintext
#.env file example
BOT_TOKEN=yout_bot_token_goes_here
NATS_SERVICE_URL=natsuri:4222
TGBUSER_SERVICE_URL=localhost:3001 // needed to start svc
ENV=development // define log level on start
ADMINS=admin_ids_comma_separated // id for admins, those will not need auth
RATE_LIMIT_SEC=12 // amount of time to limit hits in sec
RATE_LIMIT_AMOUNT=2 // amount of hit limits in x times
AI_SERVER_URI=http://10.0.0.164
AI_CHAT_SERVER_PORT=11434
AI_CHAT_MODEL=deepseek-r1:8b
AI_CHAT_MODEL_FAST=llama3.2:latest
AI_CHAT_IMAGE=llava:7b
AI_TRANSCRIBE_SERVER_PORT=8080
AI_TRANSCRIBE_MODEL=whisper-1
#+END_SRC
** Running the Bot
<<Running the Bot>>
To start the bot, execute one of the following commands
If the .env Vars ar e in the environment is dafe to run:
#+BEGIN_SRC bash
go run cmd/bot/.
#+END_SRC
Else you can run though Makefile with target run-local
The Makefile populate .env, build and run the source code, on each
run the clean target will be called.
#+begin_src bash
make run-local
#+end_src
Your bot should now be running locally.
** Description
<<Description>>
This is a template Telegram bot designed to be shared across various
projects. It includes ready-to-use handlers for commands or queries,
serving as examples to simplify development. The bot is built using
the current version of the [[https://github.com/go-telegram/bot][go-telegram/bot]] library, ensuring
up-to-date functionality and integration.
In the functions added for the template you can find things like:
- Message Handlers
- Command Handlers
- Callback Query Handlers
- Interactions Handlers
- Photos Hanlder
- Voice Note Handler
- Location Handler
- Document Handlers
- Middlewares
- Singleflight
- Loging
- Rate Limiting
- Auth Func
- Helpers
- Auth
- File
- Photo
- Keyboard
- Folder creation to handle photos voice or documents
This template heavily relies on the **[[tgbuser]]** microservice for
handling user authentication and permissions.
As The current date theres still a TODO on the WebApp part of the bot
for serving and templating an example for miniApps