Alexei
2 years ago
commit
7affd61ea8
8 changed files with 217 additions and 0 deletions
@ -0,0 +1,4 @@
|
||||
config_telegram_bot_api_token |
||||
config_root_ids |
||||
__pycache__ |
||||
log.txt |
@ -0,0 +1,3 @@
|
||||
Этот продукт является ОБЩЕСТВЕННЫМ ДОСТОЯНИЕМ и может быть использован КАК ЕСТЬ, со всеми достоинствами и недостатками, полностью или частично, кем угодно и в каких угодно целях БЕЗ КАКИХ-ЛИБО ОГРАНИЧЕНИЙ. |
||||
|
||||
This product is PUBLIC DOMAIN and may be used AS IS, with all advantages and faults, in whole or in part, by anyone for any purpose, WITHOUT ANY CONDITIONS. |
@ -0,0 +1,38 @@
|
||||
## PlatformBot |
||||
|
||||
### Мультимодульный Telegram-бот с возможностью редактирования прав доступа, как пользователям, так и группам пользоветелей |
||||
|
||||
--------- |
||||
|
||||
Данный бот позволяет создать свою площадку для взаимодействия на некоммерческой основе в мессенджере Telegram и обмениваться ресурсами и компетенциями для реализиации различных проектов. |
||||
|
||||
Бам бот разработан на языке программирования **Python** с использованием фреймворка **Aiogram**. База данных - **SQLite3**. |
||||
|
||||
------ |
||||
|
||||
**Установка, первичная настройка и запуск** |
||||
|
||||
>Для работы требуется, как минимум, Python 3.8. |
||||
|
||||
*** Загрузка зависимостей *** |
||||
|
||||
AltLinux |
||||
|
||||
`sudo apt-get install python3-modules-pip` |
||||
`sudo apt-get install python3-modules-sqlite3` |
||||
`python3 -m pip install -r requirements.txt` |
||||
|
||||
*** Запуск *** |
||||
|
||||
`python3 main.py` - AltLinux |
||||
|
||||
*** Конфигурирование *** |
||||
|
||||
Создайте два файла рядом с `main.py` |
||||
|
||||
`config_root_ids` |
||||
|
||||
`config_telegram_bot_api_token` |
||||
|
||||
Запишите в первый Telegram ID пользователей, которым будет предоставлен полный (root) доступ |
||||
Во втором файле должен быть записан api_token бота, который создаётся при помощи @BotFather |
@ -0,0 +1,34 @@
|
||||
#-*-coding utf-8-*- |
||||
# Общественное достояние 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru> |
||||
|
||||
import sqlite3 |
||||
|
||||
# Работа с базой данных |
||||
|
||||
# Имя файла БД |
||||
g_bd_file_name = 'bot.db' |
||||
|
||||
# --------------------------------------------------------- |
||||
# Первичаня иницилизация базы данных |
||||
|
||||
# Открываем БД, если её нет, то создаём |
||||
db = sqlite3.connect(g_bd_file_name) |
||||
cursor = db.cursor() |
||||
|
||||
# Таблица пользователей |
||||
cursor.execute("""CREATE TABLE IF NOT EXISTS users( |
||||
user_id INTEGER, |
||||
userName TEXT, |
||||
UNIQUE(user_id) |
||||
)""") |
||||
|
||||
# Таблица групп пользователей |
||||
cursor.execute("""CREATE TABLE IF NOT EXISTS group( |
||||
group_id INTEGER, |
||||
groupName TEXT, |
||||
UNIQUE(group_id) |
||||
)""") |
||||
|
||||
db.commit() |
||||
cursor.close() |
||||
db.close() |
@ -0,0 +1,59 @@
|
||||
#-*-coding utf-8-*- |
||||
# Общественное достояние 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru> |
||||
|
||||
# Настнойка основных параметров системы |
||||
|
||||
# --------------------------------------------------------- |
||||
# API токен телеграмм бота. Создаётся с помощью @BotFather |
||||
# Задаётся либо прямо тут в коде, либо в файле telegram_bot_api_token_file_name |
||||
g_telegram_bot_api_token = '' |
||||
|
||||
# Пользователи имеющие полный доступ, ID можно узнать например у этого бота @GetMyIDBot |
||||
# Задаётся либо прямо тут в коде, либо в файле root_ids_file_name |
||||
g_root_ids = [] |
||||
|
||||
# Логирование событий в файл |
||||
g_log_to_file = True |
||||
|
||||
# --------------------------------------------------------- |
||||
# Файлы для настройки, которые не коммитятся в git |
||||
telegram_bot_api_token_file_name = 'config_telegram_bot_api_token' |
||||
root_ids_file_name = 'config_root_ids' |
||||
|
||||
# --------------------------------------------------------- |
||||
# Дополнительные функции |
||||
|
||||
def ClearReadLine(a_Line): |
||||
return a_Line[:-1] |
||||
|
||||
def GetFirstLineFromFile(a_FileName): |
||||
f = open(a_FileName, 'r') |
||||
result = f.readline() |
||||
f.close() |
||||
return result |
||||
|
||||
def GetAllLinesFromFile(a_FileName): |
||||
f = open(a_FileName, 'r') |
||||
result = f.readlines() |
||||
f.close() |
||||
return result |
||||
|
||||
# --------------------------------------------------------- |
||||
# Основные функции |
||||
|
||||
def GetTelegramBotApiToken(): |
||||
global g_telegram_bot_api_token |
||||
if len(g_telegram_bot_api_token) == 0: |
||||
g_telegram_bot_api_token = ClearReadLine(GetFirstLineFromFile(telegram_bot_api_token_file_name)) |
||||
|
||||
return g_telegram_bot_api_token |
||||
|
||||
def GetRootIDs(): |
||||
global g_root_ids |
||||
if len(g_root_ids) == 0: |
||||
root_ids = GetAllLinesFromFile(root_ids_file_name) |
||||
for i in root_ids: |
||||
g_root_ids += [ClearReadLine(i)] |
||||
|
||||
return g_root_ids |
||||
|
@ -0,0 +1,54 @@
|
||||
#-*-coding utf-8-*- |
||||
# Общественное достояние 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru> |
||||
|
||||
# --------------------------------------------------------- |
||||
# Логирование событий в файл |
||||
|
||||
# Четыре типа уведомлений: |
||||
# Info - Информация. |
||||
# Warn - Предупреждение. |
||||
# Error - Ошибка. |
||||
# Success - Успех. |
||||
|
||||
# Файл лога |
||||
g_log_file_name = 'log.txt' |
||||
|
||||
from botsys import config |
||||
import colorama |
||||
import datetime |
||||
colorama.init() |
||||
|
||||
def GetTime(): |
||||
now = datetime.datetime.now() |
||||
time = now.strftime(f"[%d.%m.%Y, %H:%M]") |
||||
return time |
||||
|
||||
def Info(a_LogMessage): |
||||
time = GetTime() |
||||
WriteToFile(f'{time} | {a_LogMessage}') |
||||
print(f"{time} {colorama.Back.BLUE}{colorama.Style.BRIGHT} ИНФО {colorama.Style.RESET_ALL} | {a_LogMessage}") |
||||
|
||||
def Warn(a_LogMessage): |
||||
time = GetTime() |
||||
WriteToFile(f'{time} | {a_LogMessage}') |
||||
print(f"{time} {colorama.Back.YELLOW}{colorama.Style.BRIGHT} ВНИМАНИЕ {colorama.Style.RESET_ALL} | {a_LogMessage}") |
||||
|
||||
def Error(a_LogMessage): |
||||
time = GetTime() |
||||
WriteToFile(f'{time} | {a_LogMessage}') |
||||
print(f"{time} {colorama.Back.RED}{colorama.Style.BRIGHT} ОШИБКА {colorama.Style.RESET_ALL} | {a_LogMessage}") |
||||
|
||||
def Success(a_LogMessage): |
||||
time = GetTime() |
||||
WriteToFile(f'{time} | {a_LogMessage}') |
||||
print(f"{time} {colorama.Back.GREEN}{colorama.Style.BRIGHT} УСПЕХ {colorama.Style.RESET_ALL} | {a_LogMessage}") |
||||
|
||||
def WriteToFile(a_LogMessage): |
||||
if config.g_log_to_file != True: |
||||
return |
||||
|
||||
f = open(g_log_file_name, 'a+') |
||||
f.write(a_LogMessage) |
||||
f.write('\n') |
||||
f.close() |
||||
|
@ -0,0 +1,23 @@
|
||||
# -*- coding: utf8 -*- |
||||
# Общественное достояние 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru> |
||||
|
||||
log_start_message = 'Бот успешно запущен!' |
||||
|
||||
import os |
||||
from aiogram import Bot, types |
||||
from aiogram.utils import executor |
||||
from aiogram.dispatcher import Dispatcher |
||||
from aiogram.contrib.fsm_storage.memory import MemoryStorage |
||||
import sqlite3 |
||||
from botsys import config, log |
||||
|
||||
storage = MemoryStorage() |
||||
bot = Bot(token=config.GetTelegramBotApiToken(), parse_mode=types.ParseMode.HTML) |
||||
dp = Dispatcher(bot, storage=storage) |
||||
|
||||
if __name__ == '__main__': |
||||
os.system('clear') |
||||
os.system('cls') |
||||
log.Success(log_start_message) |
||||
|
||||
executor.start_polling(dp) |
Loading…
Reference in new issue