11 KiB
TelegramPoster
Цей бот використовується для однієї-єдиної задачі - публікувати фотографії з мого особистого архіву. Ось його код, тож ви також можете запустити бота і погратися з ним самостійно. Тільки не очікуйте, що він буде ідеальним. Це не так. Але ви завжди можете його форкнути ;)
Залежності
- Python 3.8+ (рекомендується 3.9+)
- MongoDB
- PhotosAPI
Користуйтесь інструкцією зі встановлення MongoDB та README Photos API.
Зверніть увагу, що Photos API також потребує MongoDB, тому має сенс спочатку встановити й налаштувати Mongo.
Встановлення
Щоб запустити бота, вам потрібно мати інтерпретатор Python, Photos API, MongoDB і, за бажанням, git (якщо ви хочете оновлювати за допомогою git pull
). Ви також можете проігнорувати git і просто завантажити вихідний код, це також повинно спрацювати. Після цього ви готові до роботи.
У цьому README я припускаю, що ви використовуєте python за замовчуванням у вашій системі, і він міститься у вашому системному PATH. Якщо ваш python за замовчуванням це
python3
або, наприклад,/home/user/.local/bin/python3.9
- використовуйте його. Якщо це нестандартний шлях до виконуваного файлу - вам також слід змінити його у скриптах, які ви будете використовувати (loop.sh
,loop.bat
,start.sh
таstart.bat
).
-
Встановіть MongoDB та Photos API:
- Встановіть MongoDB, дотримуючись офіційного посібника зі встановлення
- Встановіть Photos API, дотримуючись README Photos API
-
Завантажте бота:
git clone https://git.end-play.xyz/profitroll/TelegramPoster.git
(якщо ви використовуєте git)cd TelegramPoster
-
Створіть віртуальне середовище [Необов'язково]:
- Встановіть модуль virtualenv:
pip install virtualenv
- Створіть venv:
python -m venv .venv
- Активуйте його за допомогою
ource .venv/bin/activate
в Linux,.venv\Scripts\activate.bat
в CMD або.venv\Scripts\Activate.ps1
в PowerShell.
- Встановіть модуль virtualenv:
-
Встановіть залежності проекту:
python -m pip install -r requirements.txt
.
Без їх встановлення бот не зможе працювати взагалі. -
Налаштуйте необхідні ключі за допомогою вашого улюбленого текстового редактора:
- Скопіюйте конфігураційний файл:
cp config_example.json config.json
- Відкрийте
config.json
за допомогою вашого улюбленого текстового редактора. Наприклад,nano config.json
, але ви також можете відредагувати його за допомогою vim, mcedit або Notepad/Notepad++ на Windows - Змініть значення ключів
"bot.owner"
,"bot.api_id"
,"bot.api_hash"
і"bot.bot_token"
.
Якщо ви не знаєте, де знайти bot_token і ваш id - тут ви можете знайти кілька підказок: отримати токен бота, отримати свій id, отримати api_hash та api_id.
- Скопіюйте конфігураційний файл:
-
Налаштування бази даних та API:
-
Налаштуйте базу даних:
- Змініть хост і порт бази даних у ключах
"database.host"
і"database.port"
. Для локальної установки за замовчуванням це будуть127.0.0.1
і27017
відповідно - Змініть ім'я бази даних в
"database.name"
. Вона буде автоматично створена при запуску - Якщо ви змінили користувача та пароль для доступу до бази даних, вам також слід змінити ключі
"database.user"
та"database.password"
, інакше залиште їхnull
(за замовчуванням).
- Змініть хост і порт бази даних у ключах
-
Налаштуйте Photos API:
- Змініть
"posting.api.address"
та"posting.api.address_external"
на ті, що використовує ваш сервер API - Запустіть бота за допомогою
python main.py --create-user --create-album
, щоб налаштувати нового користувача та альбом. Ви також можете скористатися ручним створенням користувача і альбому, описаним у вікі. Ви також можете змінити ім'я користувача, пароль і альбом у"posting.api"
на користувача і альбом, які у вас є, якщо у вас вже налаштовані альбом і користувач Photos API. У цьому випадку вам не потрібно створювати нові.
- Змініть
-
-
Додайте бота до каналу:
Щоб використовувати бота, вам, звичайно, потрібно мати канал або групу, інакше немає сенсу мати такого бота. Тут ви можете знайти короткий посібник, як додати бота до каналу. Після цього просто встановіть
"posting.channel"
на ID вашого каналу і"posting.comments"
на ID групи коментарів. -
Налаштуйте час публікації:
Щоб ваш бот публікував випадковий контент, вам потрібно налаштувати
"posting.time"
зі списком рядків у форматі "ДД:ММ" або використовувати"posting.interval"
у форматі "XdXhXmXs". Щоб використовувати інтервал замість вибраного часу, встановіть"posting.use_interval"
у значенняtrue
. -
Готово, запускайте!
Переконайтеся, що MongoDB і Photos API запущені і використовуйте
python main.py
для запуску бота.
Або ви також можете використовувати.\start.bat
в Windows іbash ./start.sh
в Linux.
Додатково доступніloop.sh
іloop.bat
, якщо ви хочете, щоб ваш бот запустився знову після зупинки або після використання команди/shutdown
.
Якщо вам потрібні додаткові інструкції щодо налаштування бота або у вас виникли труднощі - скористайтеся вікі в цьому репозиторії, щоб отримати детальніші інструкції.
CLI аргументи
Звичайно, бот також має CLI аргументи. За допомогою них можна виконувати деякі дії.
--create-user
- створити нового користувача API. Потребує встановленого конфігураційного ключа"posting.api.address"
;--create-album
- створити новий альбом API. Вимагає заповнених адреси API та конфігурації користувача ("posting.api"
).
Приклади:
python main.py --create-user
python main.py --create-user --create-album
Поради та покращення
- Можливо, ви захочете налаштувати бота для роботи як системну службу. У вікі є сторінка з цього питання.
Локалізація
Бот може використовувати файли локалізації. Деякі з них встановлено за замовчуванням (англійська та українська), але ви також можете додавати свої власні.
Усі файли локалізації знаходяться у теці locale
. Просто скопіюйте файл локалі за вашим вибором, назвіть його відповідно до мовних кодів IETF (якщо ви хочете, щоб ваша локаль була сумісна з локалями Telegram) або дайте йому власну назву. Збережіть переклад у форматі json, і все буде готово. Якщо ви хочете змінити локаль за замовчуванням для повідомлень - відредагуйте параметр "locale"
у файлі config.json
.
Ми рекомендуємо вносити зміни лише у вашу власну локаль. Або, принаймні, завжди мати резервну копію, наприклад, en.json
як запасний варіант.