Skip to content

morenod/punsBot

Repository files navigation

GitHub Repo

GitHub release license

Container Image

Docker Repository on Quay

Travis CI

Master: Build Status

Develop: Build Status

PunsBot

A very extended Spanish tradition is about to make puns when talking to a somebody using the last word of a sentence.

For example (Spanish):

-- He quedado con Carlos

-- ¿Que Carlos?

-- ¡¡El de los cojones largos!!

PunsBot is a telegram Bot to automatically make this kind of puns on Telegram Group Chats.

It has a default database of puns (English & Spanish) and any other can be added on your channel using commands.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

This bot uses the python library pyTelegramBotAPI

It can be easily installed using pip

$ pip install pyTelegramBotAPI

Or obtaining it from source

$ git clone https://github.com/eternnoir/pyTelegramBotAPI.git
$ cd pyTelegramBotAPI
$ python setup.py install

Telegram token and sqlite database has to be exported as shell vars:

$ export DBLOCATION=/Users/david/punsdb.db
$ export TOKEN=<<telegram token>>

For information about how to create a Telegram Bot and obtain a token, enter on https://core.telegram.org/bots

Default Puns Submodule

Default puns are obtained from a secondary repo. It can be used or not to deploy a new instance. It is referenced from the bot repo pointing to the last existinng commit when release is created. If you want to use the last version of it, remember to update the submodule when clonning the repo.

Installing

For installing punsBot, just download the punsBot.py and the defaultpuns directory defaultpuns and place them in the same directory.

$ find .
.
./defaultpuns
./defaultpuns/englishpuns
./defaultpuns/spanishpuns
./punsbot.py

SQLite database will be created on the first run if it does not exists.

$ export TOKEN=360...4TJHQ
$ export DBLOCATION=./punsdb.db
$ python punsbot.py
PunsBot 0.4.0 ready for puns!

Deployment

PunsBot can be deployed as shell script or using cointainers. a Dockerfile is included in the repository to deploy it on a docker host.

Built With

  • DockerHub - Automated builts are created with each commit on the develop and master branches, and manual builts are created with each production-ready release.

To deploy PunsBot using docker:

docker run --name=punsBot -v /var/punsdb:/var/punsdb -e TOKEN=$TOKEN -e DBLOCATION=/var/punsdb/punsdb.db -d  gotrunks/punsbot

Usage

  • To start bot on a chat, add @puns2bot contact on it

  • To list available puns, execute /list or /punslist, it will list default puns, available for all chats, and specific puns, added on your channel.

  • To add a new pun, execute /punadd followed by the trigger used to detect the pun, a "|" char as separator and the pun, for example:

    • /punadd carlos|el de los cojones largos
  • Regex are valid on triggers, for example:

    • /punadd ^.*ado$|el que tengo aqui colgado

      This trigger will detect all words ended on ado, like Abogado, Certificado, etc...

  • Added puns are created disabled, they have to be validated by people of the chat. Minimun karma required to enable a pun can be configured with the parameter required_validations

  • To add +1 to the karma of a pun, execute /punapprove UUID

  • To add -1 to the karma of a pun, execute /punban UUID

  • To delete a pun, execute /pundel followed by the UUID of the pun. UUID can be obtained from the /list command. Only channel puns can be deleted.

Production Deployment

A running instance of punsBot can be found opening a chat to the Telegram contact @puns2bot or entering on https://telegram.me/puns2bot

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the GPL-3.0 License - see the LICENSE.md file for details