A Telegram Bot based on plugins using tg.
After the introduction of the Telegram Bot API, I slowly stopped running the bot on my account. I haven't made any changes to it since.
- Also listen to commands sent by me (yep, I didn't bother to make another account for the bot)
- Protect from command injection and other nasties by appending "❱ " to the beginning of all messages
- lyli plugin
- Creates shortened links with !lyli [long url] using the lyli.fi service
- Also stores the most recent link posted to all (specific) chats, so that users can quicly "!lyli" to shorten that link
- !pili [keyword] to get the target of lyli links (not lyli.fi/keyword, just keyword)
- !info command
- Displays some information about the bot and links to this repo
- shell plugin
- You read right — it's pure uncensored, unescaped unix commands!
- Be rude and reboot the Raspberry Pi this bot is running on with "!sh sudo reboot"
- Sadly this plugin requires priviliged access.
- There might be a lot of security risks with this implementation, but I don't really care, as the Raspberry Pi has nothing important on it. If you manage to do something to my other computers in the same network, atleast I'll be convieniently notified while you do so 😄
- 100% more awesome quotes plugin
- Add public quote functionality
- Use !addpublicquote to add quotes retrievable in all chats
- Possible feature of the future: !listquotes and retrieve specific quotes with !quote [id]
- Add public quote functionality
- This fork (atleast the master branch, I have a for-pr branch inteded for PRs) is not intended for merge back to the original repo.
- When user sends image (png, jpg, jpeg) URL download and send it to origin.
- When user sends media (gif, mp4, pdf, etc.) URL download and send it to origin.
- When user sends twitter URL, send text and images to origin. Requires OAuth Key.
- When user sends YouTube URL, send to origin video image.
Name | Description | Usage |
9gag.lua | 9GAG for telegram | !9gag: Send random image from 9gag |
boobs.lua | Gets a random boobs or butts pic | !boobs: Get a boobs NSFW image. 🔞 !butts: Get a butts NSFW image. 🔞 |
btc.lua | Bitcoin global average market value (in EUR or USD) | !btc [EUR|USD] [amount] |
bugzilla.lua | Lookup bugzilla status update | /bot bugzilla [bug number] |
calculator.lua | Calculate math expressions with mathjs API | !calc [expression]: evaluates the expression and sends the result. |
channels.lua | Plugin to manage channels. Enable or disable channel. | !channel enable: enable current channel !channel disable: disable current channel |
danbooru.lua | Gets a random fresh or popular image from Danbooru | !danbooru - gets a random fresh image from Danbooru 🔞 !danboorud - random daily popular image 🔞 !danbooruw - random weekly popular image 🔞 !danboorum - random monthly popular image 🔞 |
dogify.lua | Create a doge image with words. | !dogify (words/or phrases/separated/by/slashes) - Create a doge image with the words. |
download_media.lua | When bot receives a media msg, download the media. | |
echo.lua | Simplest plugin ever! | !echo [whatever]: echoes the msg |
eur.lua | Real-time EURUSD market price | !eur [USD] |
expand.lua | Expand a shorten URL to the original. | !expand [url] |
fortunes_uc3m.lua | Fortunes from Universidad Carlos III | !uc3m |
get.lua | Retrieves variables saved with !set | !get (value_name): Returns the value_name value. |
giphy.lua | GIFs from telegram with Giphy API | !gif (term): Search and sends GIF from Giphy. If no param, sends a trending GIF. !giphy (term): Search and sends GIF from Giphy. If no param, sends a trending GIF. |
google.lua | Searches Google and send results | !google [terms]: Searches Google and send results |
gps.lua | generates a map showing the given GPS coordinates | !gps latitude,longitude: generates a map showing the given GPS coordinates |
hackernews.lua | Show top 5 hacker news (ycombinator.com) | !hackernews |
hello.lua | Says hello to someone | say hello to [name] |
help.lua | Help plugin. Get info from other plugins. | !help: Show list of plugins. !help all: Show all commands for every plugin. !help [plugin name]: Commands for that plugin. |
id.lua | Know your id or the id of a chat members. | !id: Return your ID and the chat id if you are in one. !id(s) chat: Return the IDs of the chat members. |
images.lua | When user sends image URL (ends with png, jpg, jpeg) download and send it to origin. | |
imdb.lua | IMDB plugin for Telegram | !imdb [movie] |
img_google.lua | Search image with Google API and sends it. | !img [term]: Random search an image with Google API. |
invite.lua | Invite other user to the chat group | !invite name [user_name] !invite id [user_id] |
isup.lua | Check if a website or server is up. | !isup [host]: Performs a HTTP request or Socket (ip:port) connection !isup cron [host]: Every 5mins check if host is up. (Requires privileged user) !isup cron delete [host]: Disable checking that host. |
location.lua | Gets information about a location, maplink and overview | !loc (location): Gets information about a location, maplink and overview |
magic8ball.lua | Magic 8Ball | !magic8ball |
media.lua | When user sends media URL (ends with gif, mp4, pdf, etc.) download and send it to origin. | |
meme.lua | Generate a meme image with up and bottom texts. |
!meme search (name): Return the name of the meme that match. !meme list: Return the link where you can see the memes. !meme listall: Return the list of all memes. Only admin can call it. !meme [name] - [text_up] - [text_down]: Generate a meme with the picture that match with that name with the texts provided. !meme [name] "[text_up]" "[text_down]": Generate a meme with the picture that match with that name with the texts provided. |
minecraft.lua | Searches Minecraft server and sends info | !mine [ip]: Searches Minecraft server on specified IP and sends info. Default port: 25565 !mine [ip] [port]: Searches Minecraft server on specified IP and port and sends info. |
pili.lua | Shorten an URL with pili.la service | !pili [url]: Short the url |
plugins.lua | Plugin to manage other plugins. Enable, disable or reload. | !plugins: list all plugins. !plugins enable [plugin]: enable plugin. !plugins disable [plugin]: disable plugin. !plugins disable [plugin] chat: disable plugin only this chat. !plugins reload: reloads all plugins. |
qr.lua | Given a text it returns a qr code | !qr [text] : returns a black and white qr code !qr "[background color]" "[data color]" [text] : returns a colored qr code (see !help qr to see how specify colors). |
quotes.lua | Quote plugin, you can create and retrieves random quotes | !addquote [msg] !quote |
rae.lua | Spanish dictionary | !rae [word]: Search that word in Spanish dictionary. |
roll.lua | Roll some dice! | !roll d | d |
rss.lua | Manage User/Chat RSS subscriptions. | !rss: Get the rss subscriptions. !rss subscribe (url): Subscribe to that url. !rss unsubscribe (id): Unsubscribe of that id. !rss sync: Sync the rss subscriptios now. Only sudo users can use this option. |
search_youtube.lua | Search video on YouTube and send it. | !youtube [term]: Search for a YouTube video and send it. |
set.lua | Plugin for saving values. get.lua plugin is necessary to retrieve them. | !set [value_name] [data]: Saves the data with the value_name name. |
stats.lua | Plugin to update user stats. | !stats: Returns a list of Username [telegram_id]: msg_num |
steam.lua | Grabs Steam info for Steam links. | |
tex.lua | Convert LaTeX equation to image | !tex [equation]: Convert LaTeX equation to image |
time.lua | Displays the local time in an area | !time [area]: Displays the local time in that area |
translate.lua | Translate some text | !translate text. Translate the text to English. !translate target_lang text. !translate source,target text |
tweet.lua | Random tweet from user | !tweet id [id]: Get a random tweet from the user with that ID !tweet id [id] last: Get a random tweet from the user with that ID !tweet name [name]: Get a random tweet from the user with that name !tweet name [name] last: Get a random tweet from the user with that name |
twitter.lua | When user sends twitter URL, send text and images to origin. Requires OAuth Key. | |
twitter_send.lua | Sends a tweet | !tw [text]: Sends the Tweet with the configured account. |
version.lua | Shows bot version | !version: Shows bot version |
vote.lua | Plugin for voting in groups. | !voting reset: Reset all the votes. !vote [number]: Cast the vote. !voting stats: Shows the statistics of voting. |
weather.lua | weather in that city (Madrid is default) | !weather (city) |
webshot.lua | Take an screenshot of a web. | !webshot [url] |
wiki.lua | Searches Wikipedia and send results | !wiki [terms]: Searches wiki and send results !wiki_set [wiki]: sets the wikimedia site for this chat !wiki_get: gets the current wikimedia site |
xkcd.lua | Send comic images from xkcd | !xkcd (id): Send an xkcd image and title. If not id, send a random one |
youtube.lua | Sends YouTube info and image. |
# Tested on Ubuntu 14.04, for other OSs check out https://github.com/vysheng/tg#installation
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make unzip git redis-server g++ libjansson-dev libpython-dev expat libexpat1-dev
# After those dependencies, lets install the bot
cd $HOME
git clone https://github.com/yagop/telegram-bot.git
cd telegram-bot
./launch.sh install
./launch.sh # Will ask you for a phone number & confirmation code.
Enable more plugins
See the plugins list with !plugins
command.
Enable a disabled plugin by !plugins enable [name]
.
Disable an enabled plugin by !plugins disable [name]
.
Those commands require a privileged user, privileged users are defined inside data/config.lua
(generated by the bot), stop de bot and edit if necessary.
If your Linux/Unix comes with upstart you can run the bot by this way
$ sed -i "s/yourusername/$(whoami)/g" etc/telegram.conf
$ sed -i "s_telegrambotpath_$(pwd)_g" etc/telegram.conf
$ sudo cp etc/telegram.conf /etc/init/
$ sudo start telegram # To start it
$ sudo stop telegram # To stop it
You can contact me via Telegram but if you have an issue please open one.
Join on the TelegramBot Discussion Group.