Merge branch 'master' of github.com:telegram-bots/imaginaryfriend

This commit is contained in:
REDNBLACK 2017-08-18 01:06:57 +03:00
commit a029a4ce31
10 changed files with 47 additions and 14 deletions

3
.gitignore vendored
View File

@ -2,11 +2,14 @@
*.pyc
*.rb
*.sublime-workspace
*.sublime-project
*.txt
logging.cfg
storage
venv
ruby*/
.idea
*.ipynb
### Linux ###
*~

View File

@ -1,8 +1,9 @@
FROM python:3.6.2-alpine3.6
ENV CONFIG_PATH "cfg/main.docker.cfg"
ENV LIBRARY_PATH=/lib:/usr/lib
RUN mkdir /code/
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
RUN apk add --no-cache build-base jpeg-dev zlib-dev && pip install -r requirements.txt && apk del build-base
ADD . /code/
CMD ["python", "-u", "run.py"]

View File

@ -1,3 +1,4 @@
python-telegram-bot==6.1.0
redis==2.10.6
Pillow==4.1.0
retry==0.9.2
Pillow==4.2.1

View File

@ -7,8 +7,9 @@ mod_f - (ADMIN ONLY) Find word to remove
mod_d - (ADMIN ONLY) Remove given word
meow - Random cat pic
borscht - Random borscht pic
vzhuh и текст - Create вжух meme with «вжух и текст» caption
woof - Random dog pic
boobs - Random boobs pic
butts - Random butt pic
xkcd - Random xkcd comic
o Random facepalm pic
vzhuh и текст - Create вжух meme with «вжух и текст» caption

View File

@ -12,7 +12,8 @@ Available commands:
• /woof: show random dog pic,
• /boobs: show random boobs pic,
• /butts: show random butt pic,
• /xkcd: show random xkcd comic.
• /xkcd: show random xkcd comic
• /o: send random facepalm pic.
If you get tired of me, you can kick me from the group.
In 12 hours, I'll forget everything that have been learned in your chat, so you can add me again and teach me new things!

View File

@ -1,5 +1,6 @@
from telegram import Update
from telegram.ext import Handler
from telegram.ext.dispatcher import run_async
from src.domain.command import Command
from .commands import commands
@ -25,6 +26,7 @@ class CommandHandler(Handler):
return self.callback(dispatcher.bot, update, **optional_args)
@run_async
def handle(self, bot, update):
command = Command(update.message)

View File

@ -1,18 +1,19 @@
from src.handler.commands.base import Base
from src.handler.commands.start import Start
from src.handler.commands.help import Help
from src.handler.commands.ping import Ping
from src.handler.commands.get_stats import GetStats
from src.handler.commands.moderate import Moderate
from src.handler.commands.chance import Chance
from src.handler.commands.get_stats import GetStats
from src.handler.commands.help import Help
from src.handler.commands.moderate import Moderate
from src.handler.commands.ping import Ping
from src.handler.commands.start import Start
from src.handler.commands.butts import Butts
from src.handler.commands.boobs import Boobs
from src.handler.commands.meow import Meow
from src.handler.commands.woof import Woof
from src.handler.commands.borscht import Borscht
from src.handler.commands.xkcd import XKCD
from src.handler.commands.butts import Butts
from src.handler.commands.facepalm import Facepalm
from src.handler.commands.meow import Meow
from src.handler.commands.vzhuh import Vzhuh
from src.handler.commands.woof import Woof
from src.handler.commands.xkcd import XKCD
commands = {}
for clazz in Base.__subclasses__():

View File

@ -0,0 +1,16 @@
from .base import Base
from urllib.request import urlopen, Request
class Facepalm(Base):
name = 'facepalm'
aliases = ['o']
@staticmethod
def execute(bot, command):
req = Request("http://loremflickr.com/500/410/facepalm", headers={'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36"})
output = open("storage/facepalm.jpg", "wb")
output.write(urlopen(req).read())
output.close()
bot.send_photo(chat_id=command.chat_id, photo=open('storage/facepalm.jpg', 'rb'))

View File

@ -4,7 +4,7 @@ from src.config import config, trigram_repository
class Moderate(Base):
aliases = ['mod_f', 'mod_d']
super_admins = config.getlist('bot', 'god_mode')
super_admins = [int(id) for id in config.getlist('bot', 'god_mode')]
@staticmethod
def execute(bot, command):

View File

@ -1,4 +1,6 @@
import redis
from redis.exceptions import BusyLoadingError
from retry import retry
class Redis:
@ -9,6 +11,11 @@ class Redis:
self.pool = redis.ConnectionPool(host=config['redis']['host'],
port=config.getint('redis', 'port'),
db=config['redis']['db'])
self.__ensure_dataset_loaded()
def instance(self):
return redis.Redis(connection_pool=self.pool)
@retry(BusyLoadingError, tries=5, delay=10)
def __ensure_dataset_loaded(self):
self.instance().ping()