Skip to content

Commit

Permalink
Merge pull request #7 from jerimumhs/feature/bot_class
Browse files Browse the repository at this point in the history
Feature/bot class
  • Loading branch information
rodrigondec authored Oct 5, 2019
2 parents c2c9480 + 1f06743 commit 84be436
Show file tree
Hide file tree
Showing 21 changed files with 304 additions and 220 deletions.
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export BOT_TOKEN=meu_token_123
export BOT_PROD_TOKEN=meu_token_123
export MODE=cmd
export SERVER_URL=https://jerimumhsbot.herokuapp.com
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ config.json
.vscode
__pycache__
*.pyc

.env

env/
.idea/
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
run:
python run.py
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: python run.py
13 changes: 13 additions & 0 deletions bot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from core import BotTelegramCore
from mixins import (BaseCommandsBotMixin, CallbackBotMixin, ErrorBotMixin,
MessageBotMixin, StickerBotMixin)


class JerimumBot(BaseCommandsBotMixin, CallbackBotMixin, ErrorBotMixin,
MessageBotMixin, StickerBotMixin):
"""Bot Controller"""

def config_handlers(self):
for BaseClass in self.__class__.__bases__:
assert issubclass(BaseClass, BotTelegramCore)
BaseClass.config_handlers(self)
12 changes: 0 additions & 12 deletions bot/__init__.py

This file was deleted.

172 changes: 0 additions & 172 deletions bot/bot.py

This file was deleted.

2 changes: 2 additions & 0 deletions core/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from core.auth import adm_verify
from core.telegram import BotTelegramCore
3 changes: 3 additions & 0 deletions core/auth.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

def adm_verify(update):
return update.message.chat.get_member(update.message.from_user.id).status in ('creator', 'administrator')
46 changes: 46 additions & 0 deletions core/telegram.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from abc import ABC, abstractmethod
import logging

from telegram.ext import Updater


logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)

logger = logging.getLogger(__name__)


class BotTelegramCore(ABC):
def __init__(self, token, port, server_url):
logging.info('Inicializando o bot...')
self.token = token
self.port = port
self.server_url = server_url

self.updater = Updater(self.token)
self.config_handlers()

@abstractmethod
def config_handlers(self):
raise NotImplementedError('Cannot call config_handler from BotCore')

def run_web(self):
"""Start the bot as a webhook server"""

self.updater.start_webhook(
listen="0.0.0.0",
port=self.port,
url_path=self.token
)

self.updater.bot.set_webhook(f"{self.server_url}/{self.token}")

logging.info('Bot está rodando como um webserver!')
self.updater.idle()

def run_cmd(self):
"""Start the bot as a python script loop"""
self.updater.start_polling()

logging.info('Bot está rodando como um script python!')
self.updater.idle()
File renamed without changes
40 changes: 9 additions & 31 deletions bot/scripts/default_messages.py → messages.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
from pymongo import MongoClient

cliente = MongoClient('localhost', 27017)
banco = cliente['JerimumHSBot']
mensagens = banco['mensagens']

rules_complete = (
RULES_COMPLETE = (
"1. Não haver discriminação em nenhum sentido, raça, religião, "
"sexo ou linguagem de programação.\n"
"2. Esse não é um grupo para discussões de política ou religião, "
Expand All @@ -25,7 +19,7 @@
"Att. Jerimum Hacker Bot <3"
)

rules_bit = (
RULES_BIT = (
"REGRAS:\n\n"
"1.Respeitar os membros do grupo\n"
"2.Não compartilhar conteúdo sem autorização\n"
Expand All @@ -34,7 +28,7 @@
"5.Havendo qualquer restrição às regras, será banido"
)

description = (
DESCRIPTION = (
"O Jerimum Hackerspace é um local aberto e colaborativo que "
"fomenta a troca de conhecimento e experiências, onde as pessoas "
"podem se encontrar, socializar, compartilhar e colaborar. "
Expand All @@ -44,47 +38,31 @@
"ou o que mais a criatividade permitir."
)

welcome = (
WELCOME = (
"Olá {full_name}, seja bem-vindo ao Jerimum Hackerspace\n\n"
"Somos um grupo de pessoas interessadas em usar, remixar e compartilhar "
"tecnologia, aprendizado, diversão e cultura de forma colaborativa e indiscriminada.\n\n"
"Leia nossas /regras e agora porque você não fala um pouco sobre você?"
)

bye = (
BYE = (
"{full_name} acabou de sair do grupo, uma palminha, e uma vainha...\n\n"
"UUUuuuUUuUUUuUUUuu"
)

help = (
HELP = (
"Está com duvidas? Fale com nossos membros!\n"
"Em caso de duvidas mais especificas procure nossos Administradores."
)

start = (
START = (
"Para começar, basta digitar!"
)

error_initiate = (
ERROR_INITIATE = (
"Por favor, inicie uma conversa comigo para que eu possa te enviar uma mensagem!"
)

error_blocked = (
ERROR_BLOCKED = (
"Você me bloqueou?! Tsc tsc. Que feio!!!🙄"
)

mensagens.update_one({
"_id": "default"},
{"$set":{
"start": start,
"rules_complete": rules_complete,
"rules_bit": rules_bit,
"description": description,
"welcome": welcome,
"bye": bye,
"help": help,
"error_initiate": error_initiate,
"error_blocked": error_blocked
}
}, upsert=True)

5 changes: 5 additions & 0 deletions mixins/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from mixins.base_commands import BaseCommandsBotMixin
from mixins.callback import CallbackBotMixin
from mixins.error import ErrorBotMixin
from mixins.message import MessageBotMixin
from mixins.sticker import StickerBotMixin
Loading

0 comments on commit 84be436

Please sign in to comment.