GithubHelp home page GithubHelp logo

peerreviewbot's Introduction

PeerReviewBot

peerreviewbot's People

Contributors

andrewgolman avatar mogby avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

peerreviewbot's Issues

Review by @Mogbymo

Эти куски лучше вынести в database.has_user(username), database.has_task(taskname), потому что в них по сути выполняется SQL запрос, только в два прохода вместо одного.

PeerReviewBot/bot.py

Lines 15 to 16 in 64dffa6

users = db.get_all_logins()
if update.message.from_user.username not in users:

if update.message.text in db.get_all_tasks():

if update.message.text in db.get_all_tasks():

В этих кусках кода используется общая логика, которую неплохо было бы вынести куда-нибудь (например, сделать check_access_decorator). Ещё мне непонятно, почему в start мы добавляем юзера, если он есть в чатике, а в остальных функциях этого не делаем.

PeerReviewBot/bot.py

Lines 40 to 41 in 64dffa6

if not check_access(update):
deny_access(update)

PeerReviewBot/bot.py

Lines 46 to 47 in 64dffa6

if not check_access(update):
deny_access(update)

PeerReviewBot/bot.py

Lines 58 to 62 in 64dffa6

if not check_access(update):
if check_chat_presence(update):
db.add_user(update.message.from_user.username)
else:
deny_access(update)

PeerReviewBot/bot.py

Lines 67 to 68 in 64dffa6

if not check_access(update):
deny_access(update)

PeerReviewBot/bot.py

Lines 104 to 105 in 64dffa6

if not check_access(update):
deny_access(update)

PeerReviewBot/bot.py

Lines 117 to 118 in 64dffa6

if not check_access(update):
deny_access(update)

Внешние параметры лучше засовывать в конфиг, в секцию [telegram], чтобы потом можно было безболезненно смержить все наши конфиги в один.

token = open("token", "r").read().strip()

Общие предложения: кажется, что не очень хорошо совмещать в одной функции внутреннюю логику и логику взаимодействия с пользователем. Например, в этом коде лучше было бы парсить запрос и вызывать метод PeerReviewBackend.register_user(username), который бы добавил юзера и вернул какой-нибудь статус, на основе которого можно было бы сконструировать ответ юзеру.

PeerReviewBot/bot.py

Lines 57 to 63 in 64dffa6

def start(bot, update):
if not check_access(update):
if check_chat_presence(update):
db.add_user(update.message.from_user.username)
else:
deny_access(update)
update.message.reply_text(help_msg)

Плюс, неплохо было бы раскидать функции на два класса: PeerReviewBot и PeerReviewBackend, чтобы сделать бота более гибким и заложить основу для консольного интерфейса. К тому же, новый инстанс бота в такой парадигме можно будет запустить очень просто:

# bot_params parsing
...
# init and run bot
bot = PeerReviewBot(*bot_params)
bot.run()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.