Data Science fwdays сonference — few-shot learning, snorkel, black box and more! Kyiv, Sep 7

Оцініть телеграм бота написаного на Python початківцем

Всім привіт.

Не являюсь програмістом, але використовую Python для роботи з данними (pandas, парсинг xml і json тощо).

Ось вирішив зробити свого телеграм бота і цікаво на скільки мій код оптимально написаний, правильно організована структура проекту, зрозуміло написані коментарі.

Якщо комусь цікаво, то був би вдячний за оцінку від людей з практичним досвідом розробки.

Посилання на гітхаб: github.com/...​anzik/AnnoyingReminderBot

Посилання на самого бота: t.me/AnnoyingReminderBot

Його задача це отримувати від користувача якесь нагадування і через рандомний час в проміжку від 1 хвилини до 15 надсилати йому це нагадування. Проект задеплоїв на Heroku, тому в боті передбачено перезавантаження їх серверів.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

github говорит 404, уже потер репу?

так. коли буде вільний час, то перезалию вже без історії комітів

тю, так там самое интересное

Бот спрашиват, что напомнить, но не спрашивает время и дату. kutt.it/ArDn52

в цьому і сенс. він сам нагадує через рандомний час, щоб створити ефект надокучання

омг, можно удалять сразу) лучше свяжи его со списком гугл таблиц и вноси из бота то, что хочешь напомнить и время когда, при этом двухсторонняя связь... это реально юзфул для меня будет и для многих

такі боти вже існують. наприклад Skeddy telegram.me/skeddybot

он не работает с гугл таблицами, и иногда глючит, а если ты будешь писать свое расписание для бота в гугл таблице и бот будет выполнять, ты выучишь и google api частями + telegram api + python3 + mongodb/или другие nosql

но это имхо, а можешь делать как хочешь)

Рекомендую пошукати в інтернеті про sql injections та добре перечитати PEP 249 www.python.org/dev/peps/pep-0249

Паролі, логіни, токени, параметри підключення краще винести в окремий файл, можна, наприклад, створити config.py.example з прикладом конфігураційного файла, в коді імпортити все з config.py, який додати в .gitignore . Тоді ти зможеш локально тестити бота і не паритися при пуші комітів на гітхаб.

В рідмі можна написати кроки по встановленню бота.

Можна, мабуть, було б використати connection pool для з’єднання з бд.

дякую. почитаю. стосовно sql injections я так розумію, що вони в мене не можливі. так як при запиті до бд в where стейтменті використовується тільки chat_id, який передає бот, і його не можна мануально змінити

ніт
kek’ where chat_id = 1; update reminder set task = ’lol

таким чином я змінив task користувачу з chat_id = 1, і можу виконати любий запит.

да, бачу. дякую за допомогу. буду виправляти

я оновив бота. можеш будь ласка ще раз потестити?

Method: messages.sendMessage
Result: {"_":"rpc_error","error_code":400,"error_message":"YOU_BLOCKED_USER"}

бот ламається, коли йому стікери надсилаєш, чи це так і має бути, стікери = порожнє повідомлення

нагадаю, що просто прибрати логіни, паролі та токени та зробити новий коміт у мастер — практично нічим не допомогає в плані безпеки: github.com/...​1f14798f8a80460eb0039cL48

дякую звичайно, що звернув мою увагу, бо я не знав, що історія комітів заливається на гітхаб. але, як на мене, то це неетично викладувати посилання на конфіденційні дані в коментарях. краще це було б зробити в приватних повідомленнях (на linkedin чи телеграм). так, безумовно це 100% моя помилка, що я допустив розміщення цих даних для загального перегляду, і я вдячний тобі, що ти звернув на це увагу. але ти це зробив в найбільш неетичній формі, в якій це тільки можна було зробити. я розумію, що тобі важливо, щоб інші люди оцінили твоє неперевершене вміння сарказму, але, на мою думку, етичність і дружність повинні бути на першому місці

упоминание этичности тут не к месту, т.к. эти «конфиденциальные» данные и так были доступны всем желающим, в т.ч. ты выложил ссылку на репозиторий где это есть, то есть сам по сути дал ссылку на свои конфиденциальные данные, обвинять тут некого.

За українську мову молодець, спробуй завантажити на інші ресурси github.com/...​ere-to-host-Telegram-Bots , теж з Heroku починав

из очевидного
не надо заливать в репозиторий весь энвайрмент (папка venv). только requirements.txt.
не надо заливать файлы intellij (.idea)
не нравится мне global updater и global job_queue.

дякую. стосовно global, то не придумав нічого кращого, щоб використовувати updater і job_queue в функціях призначених для dispatcher.add_handler()

Подписаться на комментарии