diff --git a/PyRoles.py b/PyRoles.py
index 584e735..c2c3d1a 100644
--- a/PyRoles.py
+++ b/PyRoles.py
@@ -1,21 +1,19 @@
-# importando o que precisa
-import time
-from telebot import TeleBot
-import flickrapi
-import configparser
-import os
+"""PyRoles."""
import json
import hashlib
+from configparser import ConfigParser
+from os import remove
+from flickrapi import FlickrAPI
+from telebot import TeleBot
-# importando configuracoes
-config = configparser.ConfigParser()
+config = ConfigParser()
config.sections()
config.read('pyroles.conf')
# autenticando o flickr
api_key = config['FLICKR']['API_KEY']
api_secret = config['FLICKR']['API_SECRET']
-flickr = flickrapi.FlickrAPI(api_key, api_secret)
+flickr = FlickrAPI(api_key, api_secret)
if not flickr.token_valid(perms='delete'):
flickr.get_request_token(oauth_callback='oob')
@@ -28,57 +26,71 @@
TOKEN = config['TGBOT']['TOKEN']
bot = TeleBot(TOKEN)
-#passando o comando start e help para o bot
+
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
+ """Mensagem de inicialização do bot."""
bot.send_chat_action(message.chat.id, 'typing')
- bot.reply_to(message, u"Olá, eu sou o PyRolês[14]! \nEu consigo fazer uploads de todas as fotos dos rolês que aconteceram para o álbum PyRolês.\nMas para isso acontecer, é necessário ter em mente algumas regras:\n▪️ O bot aceita apenas fotografias. Gifs e vídeos ainda não são suportados. Ah! E não adianta enviar a foto como documento também, eu só aceito 'ibagens'.\n▪️ Não envie imagens de pessoas caso elas não queiram ou não saibam. Vamos respeitar a vontade do amigo de não querer a sua foto pública.📵\n▪️ Não envie nudes. Arrrr, vamos dizer que aqui não é o ambiente apropriado para você mostrar os seus dotes. \n▪️ Fotos com teor racista, homofóbico, violento, ou que infrinjam, de qualquer forma e maneira, o Código de Conduta do evento, serão excluídas, o usuário identificado e banido.\n▪️E lembre-se: \n\nPessoas >>> Tecnologia. \nUm ótimo evento para você!💛💙", parse_mode="HTML", disable_web_page_preview=True)
+ bot.reply_to(
+ message,
+ "Olá, eu sou o PyRolês[14]! \nEu consigo fazer uploads de todas as fotos dos rolês que aconteceram para o álbum PyRolês.\nMas para isso acontecer, é necessário ter em mente algumas regras:\n▪️ O bot aceita apenas fotografias. Gifs e vídeos ainda não são suportados. Ah! E não adianta enviar a foto como documento também, eu só aceito 'ibagens'.\n▪️ Não envie imagens de pessoas caso elas não queiram ou não saibam. Vamos respeitar a vontade do amigo de não querer a sua foto pública.📵\n▪️ Não envie nudes. Arrrr, vamos dizer que aqui não é o ambiente apropriado para você mostrar os seus dotes. \n▪️ Fotos com teor racista, homofóbico, violento, ou que infrinjam, de qualquer forma e maneira, o Código de Conduta do evento, serão excluídas, o usuário identificado e banido.\n▪️E lembre-se: \n\nPessoas >>> Tecnologia. \nUm ótimo evento para você!💛💙", # NOQA
+ parse_mode="HTML",
+ disable_web_page_preview=True,
+ )
-def checkDuplicate(photo):
+def check_duplicate(photo):
+ """Checa se a imagem é duplicada baseada no arquivo `hash_table.txt`."""
with open('hash_table.txt', 'r') as file:
data = file.read()
with open(str(photo), 'rb') as file:
data_foto = file.read()
- hashPhoto = hashlib.md5(data_foto).hexdigest()
- hashTable = json.loads(data)
-
-
+ hash_photo = hashlib.md5(data_foto).hexdigest()
+ hash_table = json.loads(data)
- if (hashPhoto in hashTable.values()):
+ if hash_photo in hash_table.values():
return True
-
+
else:
-
- hashTable[hashPhoto] = hashPhoto
+ hash_table[hash_photo] = hash_photo
with open('hash_table.txt', 'w') as file:
- file.write(json.dumps(hashTable))
-
+ file.write(json.dumps(hash_table))
return False
-# salvando a foto no sistema e fazendo o upload para o flickr
@bot.message_handler(content_types=['photo'])
def get_doc(message):
+ """Salva a foto no sistema e faz upload da mesma para o flickr.
+
+ TODO: separar essa função em duas para evitar side effects
+ em relação ao get do bot e ao upload.
+ """
bot.send_chat_action(message.chat.id, 'upload_photo')
raw = message.photo[-1].file_id
- path = raw+".jpg"
+ path = raw + ".jpg"
file_info = bot.get_file(raw)
downloaded_file = bot.download_file(file_info.file_path)
with open(path, 'wb') as new_file:
new_file.write(downloaded_file)
- if (not checkDuplicate(path)):
- bot.reply_to(message, "A sua fotografia agora faz parte do álbum PyRolês ! \nObrigada por fazer essa comunidade ser tão maravilhosa!💛💙", parse_mode="HTML", disable_web_page_preview=True)
- flickr.upload(filename=path, title='PyBR14', description='Python Brasil [14]')
+ if not check_duplicate(path):
+ bot.reply_to(
+ message,
+ "A sua fotografia agora faz parte do álbum PyRolês ! \nObrigada por fazer essa comunidade ser tão maravilhosa!💛💙", # NOQA
+ parse_mode="HTML",
+ disable_web_page_preview=True,
+ )
+ flickr.upload(
+ filename=path,
+ title='PyBR14',
+ description='Python Brasil [14]'
+ )
else:
bot.reply_to(message, "Foto duplicada.")
+ remove(path) # apaga a foto do servidor
-# apaga a foto do servidor
- os.remove(path)
-
-bot.polling()
+bot.polling()