109 lines
11 KiB
Markdown
109 lines
11 KiB
Markdown
<h1 align="center">TelegramPoster</h1>
|
||
|
||
<p align="center">
|
||
<a href="https://git.end-play.xyz/profitroll/TelegramPoster/src/branch/master/LICENSE"><img alt="License: GPL" src="https://img.shields.io/badge/License-GPL-blue"></a>
|
||
<a href="https://git.end-play.xyz/profitroll/TelegramPoster"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
|
||
</p>
|
||
|
||
Цей бот використовується для однієї-єдиної задачі - публікувати фотографії з мого особистого архіву. Ось його код, тож ви також можете запустити бота і погратися з ним самостійно. Тільки не очікуйте, що він буде ідеальним. Це не так. Але ви завжди можете його форкнути ;)
|
||
|
||
## Залежності
|
||
|
||
* [Python 3.8+](https://www.python.org) (рекомендується 3.9+)
|
||
* [MongoDB](https://www.mongodb.com)
|
||
* [PhotosAPI](https://git.end-play.xyz/profitroll/PhotosAPI)
|
||
|
||
Користуйтесь [інструкцією зі встановлення MongoDB](https://www.mongodb.com/docs/manual/installation) та [README Photos API](https://git.end-play.xyz/profitroll/PhotosAPI/src/branch/master/README.md).
|
||
|
||
Зверніть увагу, що 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`).
|
||
|
||
1. Встановіть MongoDB та Photos API:
|
||
|
||
1. Встановіть MongoDB, дотримуючись [офіційного посібника зі встановлення](https://www.mongodb.com/docs/manual/installation)
|
||
2. Встановіть Photos API, дотримуючись [README Photos API](https://git.end-play.xyz/profitroll/PhotosAPI/src/branch/master/README.md)
|
||
|
||
2. Завантажте бота:
|
||
|
||
1. `git clone https://git.end-play.xyz/profitroll/TelegramPoster.git` (якщо ви використовуєте git)
|
||
2. `cd TelegramPoster`
|
||
|
||
3. Створіть віртуальне середовище [Необов'язково]:
|
||
|
||
1. Встановіть модуль virtualenv: `pip install virtualenv`
|
||
2. Створіть venv: `python -m venv .venv`
|
||
3. Активуйте його за допомогою `ource .venv/bin/activate` в Linux, `.venv\Scripts\activate.bat` в CMD або `.venv\Scripts\Activate.ps1` в PowerShell.
|
||
|
||
4. Встановіть залежності проекту:
|
||
|
||
`python -m pip install -r requirements.txt`.
|
||
Без їх встановлення бот не зможе працювати взагалі.
|
||
|
||
5. Налаштуйте необхідні ключі за допомогою вашого улюбленого текстового редактора:
|
||
|
||
1. Скопіюйте конфігураційний файл: `cp config_example.json config.json`
|
||
2. Відкрийте `config.json` за допомогою вашого улюбленого текстового редактора. Наприклад, `nano config.json`, але ви також можете відредагувати його за допомогою vim, mcedit або Notepad/Notepad++ на Windows
|
||
3. Змініть значення ключів `"bot.owner"`, `"bot.api_id"`, `"bot.api_hash"` і `"bot.bot_token"`.
|
||
|
||
Якщо ви не знаєте, де знайти bot_token і ваш id - тут ви можете знайти кілька підказок: [отримати токен бота](https://www.siteguarding.com/en/how-to-get-telegram-bot-api-token), [отримати свій id](https://www.alphr.com/telegram-find-user-id), [отримати api_hash та api_id](https://core.telegram.org/api/obtaining_api_id).
|
||
|
||
6. Налаштування бази даних та API:
|
||
|
||
1. Налаштуйте базу даних:
|
||
1. Змініть хост і порт бази даних у ключах `"database.host"` і `"database.port"`. Для локальної установки за замовчуванням це будуть `127.0.0.1` і `27017` відповідно
|
||
2. Змініть ім'я бази даних в `"database.name"`. Вона буде автоматично створена при запуску
|
||
3. Якщо ви змінили користувача та пароль для доступу до бази даних, вам також слід змінити ключі `"database.user"` та `"database.password"`, інакше залиште їх `null` (за замовчуванням).
|
||
|
||
2. Налаштуйте Photos API:
|
||
1. Змініть `"posting.api.address"` та `"posting.api.address_external"` на ті, що використовує ваш сервер API
|
||
2. Запустіть бота за допомогою `python main.py --create-user --create-album`, щоб налаштувати нового користувача та альбом. Ви також можете скористатися ручним створенням користувача і альбому, описаним [у вікі](https://git.end-play.xyz/profitroll/TelegramPoster/wiki/Configuring-API). Ви також можете змінити ім'я користувача, пароль і альбом у `"posting.api"` на користувача і альбом, які у вас є, якщо у вас вже налаштовані альбом і користувач Photos API. У цьому випадку вам не потрібно створювати нові.
|
||
|
||
7. Додайте бота до каналу:
|
||
|
||
Щоб використовувати бота, вам, звичайно, потрібно мати канал або групу, інакше немає сенсу мати такого бота. [Тут](https://stackoverflow.com/a/33497769) ви можете знайти короткий посібник, як додати бота до каналу. Після цього просто встановіть `"posting.channel"` на ID вашого каналу і `"posting.comments"` на ID групи коментарів.
|
||
|
||
8. Налаштуйте час публікації:
|
||
|
||
Щоб ваш бот публікував випадковий контент, вам потрібно налаштувати `"posting.time"` зі списком рядків у форматі "ДД:ММ" або використовувати `"posting.interval"` у форматі "XdXhXmXs". Щоб використовувати інтервал замість вибраного часу, встановіть `"posting.use_interval"` у значення `true`.
|
||
|
||
9. Готово, запускайте!
|
||
|
||
Переконайтеся, що MongoDB і Photos API запущені і використовуйте `python main.py` для запуску бота.
|
||
Або ви також можете використовувати `.\start.bat` в Windows і `bash ./start.sh` в Linux.
|
||
Додатково доступні `loop.sh` і `loop.bat`, якщо ви хочете, щоб ваш бот запустився знову після зупинки або після використання команди `/shutdown`.
|
||
|
||
Якщо вам потрібні додаткові інструкції щодо налаштування бота або у вас виникли труднощі - скористайтеся [вікі в цьому репозиторії](https://git.end-play.xyz/profitroll/TelegramPoster/wiki), щоб отримати детальніші інструкції.
|
||
|
||
## 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`
|
||
|
||
## Поради та покращення
|
||
|
||
* Можливо, ви захочете налаштувати бота для роботи як системну службу. У вікі є [сторінка з цього питання](https://git.end-play.xyz/profitroll/TelegramPoster/wiki/Configuring-Service).
|
||
|
||
## Локалізація
|
||
|
||
Бот може використовувати файли локалізації. Деякі з них встановлено за замовчуванням (англійська та українська), але ви також можете додавати свої власні.
|
||
|
||
Усі файли локалізації знаходяться у теці `locale`. Просто скопіюйте файл локалі за вашим вибором, назвіть його відповідно до [мовних кодів IETF](https://en.wikipedia.org/wiki/IETF_language_tag) (якщо ви хочете, щоб ваша локаль була сумісна з локалями Telegram) або дайте йому власну назву. Збережіть переклад у форматі json, і все буде готово. Якщо ви хочете змінити локаль за замовчуванням для повідомлень - відредагуйте параметр `"locale"` у файлі `config.json`.
|
||
|
||
Ми рекомендуємо вносити зміни лише у вашу власну локаль. Або, принаймні, завжди мати резервну копію, наприклад, `en.json` як запасний варіант.
|