Git Product home page Git Product logo

ngbot's Introduction

๐Ÿ›ก๏ธ Telegram Chat Gatekeeper bot

Get rid of the unwanted spam joins out of the box

Demo

Basically, that what happens, if the bot is set up in your chat:

  1. Triggered on the events, which introduces new chat members (invite, join, etc). Also works with join requests.
  2. Restrict newcomer to be read-only.
  3. Set up a challenge for the newcomer, which is a simple task as shown on the image above, but yet, unsolvable for the vast majority of automated spam robots.
  4. If the newcomer succeeds in choosing the right answer - restrictions gets fully lifted, challenge ends.
  5. Otherwise - newcomer gets banned for 10 minutes (There is a "false-positive" chance, rememeber? Most robots aint coming back, anyway).
  6. If the newcomer struggles to answer in a set period of time (defaults to 3 minutes) - challenge automatically fails the same way, as in p.5.
  7. After the challenge bot cleans up all related messages, only leaving join notification for the newcomers, that made it. There are no traces of unsuccesful joins left, and that is awesome.

Troubleshooting

Don't hesitate to contact me

telegram linkedin

Installation

"I'm a teapot"

Ok, I've got something for ya.

  1. Invite the Quarantino into your chat group.
  2. Promote him to Admin with at least Ban, Delete, and Invite permissions enabled.
  3. (optional) Message/lang ru to change chat language.
  4. ...
  5. PROFIT.

I respect your privacy, so I do NOT log messages nor collecting personal data. This bot is hosted on my personal VDS instance, and it's completely private. Happy chatting!

"I'm too young to die"

  1. Create a bot via BotFather.
  2. Finally, enable group messages access for your bot, it's essential for your bot to be able to see newcomers.
  3. Memorize the unique token string of your bot.
  4. Have recent version of Docker.
  5. Obtain code either via git clone โ†—๏ธ or by downloading zip and extracting it.
  6. Open terminal app of your choice and navigate into the code folder.
  7. Run this command, replacing the T with the actual token string
    docker compose build --build-arg NG_TOKEN=<REPLACE_THIS> --build-arg OPENAI_API_KEY=<REPLACE_THIS>
    docker compose up -d --no-recreate
    
  8. Add your bot to chat, give him permissions to Ban, Delete, and Invite.
  9. Change bot language for this chat, if needed.
    • /lang ru (see below for the complete list of available languages)
  10. docker compose stop to stop bot docker compose start to get it up and running again.
  11. docker compose down to remove bot's artifacs.
  12. rm ~/.ngbot/bot.db to start clean.

"Hurt me plenty"

NG_DIR=${GOPATH-$HOME/go}/src/github.com/iamwavecut/ngbot
git clone [email protected]:iamwavecut/ngbot.git ${NG_DIR}
cd ${NG_DIR}

NG_TOKEN=<REPLACE_THIS>
OPENAI_API_KEY=<REPLACE_THIS>
docker build . --build-arg NG_TOKEN=$NG_TOKEN --build-arg OPENAI_API_KEY=$OPENAI_API_KEY -t ngbot
// token gets baked into container, so you just simply
docker run ngbot

Override baked variables by providing them as runtime flags

docker run -e NG_TOKEN=<ANOTHER_TOKEN> -e OPENAI_API_KEY=<ANOTHER_OPENAI_API_KEY> ngbot

"Ultra-Violence"

NG_DIR=${GOPATH-$HOME/go}/src/github.com/iamwavecut/ngbot
git clone [email protected]:iamwavecut/ngbot.git ${NG_DIR}
cd ${NG_DIR}

NG_TOKEN=<REPLACE_THIS>
NG_LANG=en
NG_HANDLERS=admin,gatekeeper
NG_LOG_LEVEL=6
OPENAI_API_KEY=<REPLACE_THIS>
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
CGO_ENABLE=1 go run .

Configuration

All configuration is meant to be passed as build time arguments, however, you are free to modify env vars at runtime at your own risk.

Required Variable name Description Default Options
โœ”๏ธ NG_TOKEN Telegram BOT API token
โŒ NG_LANG Default language to use in new chats. en be, bg, cs, da, de, el, en, es, et, fi, fr, hu, id, it, ja, ko, lt, lv, nb, nl, pl, pt, ro, ru, sk, sl, sv, tr, uk, zh
โŒ NG_HANDLERS If for some silly reason you want to get rid of admin or gateway function. Or if you are awesome and want to add yours. Or to change an invocation order. Go for it! admin,gatekeeper,reactor any combination of comma-separated default items.
โŒ NG_LOG_LEVEL Limits the logs spam, maximum verbosity by default. 6 0=Panic, 1=Fatal, 2=Error, 3=Warn, 4=Info, 5=Debug, 6=Trace
โœ”๏ธ OPENAI_API_KEY OpenAI API key to use for the reactor.
โŒ OPENAI_MODEL OpenAI model to use for the reactor. gpt-4o-mini gpt-4o, gpt-4o-mini, ...
โŒ OPENAI_BASE_URL OpenAI API base URL to use for the reactor. https://api.openai.com/v1 Any valid OpenAI API compliantbase URL

TODO

  • Improve thread safety.
  • Individual chat's settings (behaviours, timeouts, custom welcome messages, etc).
  • Interactive handy chat settings UI in private.
  • Dynamic plugin system.
  • Handy web UI for chat owners.

Feel free to add your requests in issues.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.