Init commit
This commit is contained in:
4
handlers/__init__.py
Normal file
4
handlers/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from . import groups
|
||||
from . import private
|
||||
from . import callback
|
||||
from . import errors
|
1
handlers/callback/__init__.py
Normal file
1
handlers/callback/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import main
|
56
handlers/callback/main.py
Normal file
56
handlers/callback/main.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import logging
|
||||
|
||||
from aiogram import types
|
||||
|
||||
from load import dp
|
||||
from keyboards.inline.keyboard import cancel_button, menu
|
||||
from parser import get_about_replacements
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data != "back")
|
||||
async def callback_query(query: types.CallbackQuery):
|
||||
from_user = query.from_user
|
||||
data = get_about_replacements()
|
||||
group = query.data
|
||||
|
||||
logging.info("Button: {btn}, User: {user_id} - {username}".format(
|
||||
user_id=str(from_user.id),
|
||||
username=str(from_user.username),
|
||||
btn=str(group)
|
||||
))
|
||||
|
||||
if group in data['data']:
|
||||
await query.message.edit_text(
|
||||
text="Группа: {group}\nЗамены: {replace}"
|
||||
.format(
|
||||
group=str(group),
|
||||
replace=data['data'][group]
|
||||
),
|
||||
reply_markup=cancel_button
|
||||
)
|
||||
else:
|
||||
await query.message.edit_text(
|
||||
text=(
|
||||
"Группа: {group} не найдена!\n"
|
||||
"Список обновится автоматически после нажатия кнопки ниже"
|
||||
)
|
||||
.format(
|
||||
group=str(group),
|
||||
),
|
||||
reply_markup=cancel_button
|
||||
)
|
||||
#await query.answer()
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == "back")
|
||||
async def back_button(query: types.CallbackQuery):
|
||||
data = get_about_replacements()
|
||||
await query.message.edit_text(
|
||||
"{date}\n{teacher}\nВыберите свою группу"
|
||||
.format(
|
||||
date=data["date"],
|
||||
teacher=data["another_teacher"]
|
||||
),
|
||||
reply_markup=menu(data["data"])
|
||||
)
|
||||
await query.answer()
|
1
handlers/errors/__init__.py
Normal file
1
handlers/errors/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import main
|
11
handlers/errors/main.py
Normal file
11
handlers/errors/main.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import logging
|
||||
from aiogram.utils.exceptions import BotBlocked
|
||||
|
||||
from load import dp
|
||||
|
||||
|
||||
@dp.errors_handler()
|
||||
async def errors_handler(update, exception):
|
||||
if isinstance(exception, BotBlocked):
|
||||
logging.info("Bot blocked")
|
||||
return True
|
1
handlers/groups/__init__.py
Normal file
1
handlers/groups/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import main
|
64
handlers/groups/main.py
Normal file
64
handlers/groups/main.py
Normal file
@@ -0,0 +1,64 @@
|
||||
import logging
|
||||
|
||||
from aiogram import types
|
||||
from aiogram.dispatcher.filters import ChatTypeFilter
|
||||
|
||||
from load import dp, bot, config
|
||||
from database import set_group_settings, get_group
|
||||
from parser import get_about_replacements
|
||||
from database import register
|
||||
|
||||
|
||||
@dp.message_handler(ChatTypeFilter(['group', 'supergroup']), commands=['set'])
|
||||
async def set_group(message: types.Message):
|
||||
if (message.from_user.id not in [admin.user.id for admin in await bot.get_chat_administrators(message.chat.id)]) and (message.from_user.id not in config.admin_user):
|
||||
await message.answer("Вы не являетесь администратором чата!")
|
||||
return
|
||||
args = message.text.split()
|
||||
if len(args) < 2:
|
||||
await message.answer(
|
||||
("Вы не передали имя своей группы!\n"
|
||||
"Пример: /set 221")
|
||||
)
|
||||
return
|
||||
|
||||
set_group_settings(message.chat.id, args[1])
|
||||
await message.answer("Настройка завершена успешно!")
|
||||
|
||||
@dp.message_handler(ChatTypeFilter(['group', 'supergroup']), commands=['start', 'get'])
|
||||
async def get_replace_on_chat(message: types.Message):
|
||||
if config.logging_user:
|
||||
register(
|
||||
user_id=message.from_user.id,
|
||||
username=message.from_user.username,
|
||||
first_name=str(message.from_user.first_name),
|
||||
last_name=message.from_user.last_name
|
||||
)
|
||||
|
||||
logging.info("User: {user_id} - {username}".format(
|
||||
user_id=str(message.from_user.id),
|
||||
username=str(message.from_user.username)
|
||||
))
|
||||
|
||||
data = get_about_replacements()
|
||||
group = get_group(message.chat.id)
|
||||
|
||||
if group is not None:
|
||||
if group in data['data']:
|
||||
await message.answer(
|
||||
(
|
||||
"Группа: {group}\n"
|
||||
"Замены {date}\n"
|
||||
"{teacher}\n"
|
||||
"Замены: {replace}\n"
|
||||
).format(
|
||||
group=str(group),
|
||||
replace=data['data'][group],
|
||||
date=data["date"].lower(),
|
||||
teacher=data["another_teacher"]
|
||||
)
|
||||
)
|
||||
else:
|
||||
await message.answer("Похоже замен нет")
|
||||
else:
|
||||
await message.answer("Похоже администратор группы не настроил привязку")
|
2
handlers/private/__init__.py
Normal file
2
handlers/private/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import main
|
||||
from . import admin
|
23
handlers/private/admin.py
Normal file
23
handlers/private/admin.py
Normal file
@@ -0,0 +1,23 @@
|
||||
import logging
|
||||
from aiogram import types
|
||||
|
||||
from load import dp, bot
|
||||
from parser import docs_parse
|
||||
|
||||
|
||||
@dp.message_handler(admin=True, commands=['reload'])
|
||||
async def refresh(message: types.Message):
|
||||
m = await bot.send_message(
|
||||
message.chat.id,
|
||||
"Идёт обновление информации..."
|
||||
)
|
||||
try:
|
||||
docs_parse()
|
||||
await m.edit_text(
|
||||
"Информация о заменах была обновлена!"
|
||||
)
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
await m.edit_text(
|
||||
"Произойшла ошибка!"
|
||||
)
|
82
handlers/private/main.py
Normal file
82
handlers/private/main.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import logging
|
||||
|
||||
from aiogram import types
|
||||
from aiogram.dispatcher.filters import ChatTypeFilter
|
||||
|
||||
from load import dp, bot, config
|
||||
from keyboards.inline.keyboard import menu
|
||||
from parser import get_about_replacements
|
||||
if config.logging_user:
|
||||
from database import register
|
||||
|
||||
|
||||
@dp.message_handler(commands=["help"])
|
||||
async def help_msg(message: types.Message):
|
||||
await bot.send_message(
|
||||
message.chat.id,
|
||||
(
|
||||
"Я всего-лишь небольшой помощник:3\n"
|
||||
"Умею работать в чатах, для настройки попросите администратора чата указать группу с помощью команды /set\n"
|
||||
"/set - Установить группу, для получения данных о заменах(Работает ТОЛЬКО в чатах)\n"
|
||||
"/start /get - получить информацию о заменах\n"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@dp.message_handler(ChatTypeFilter(['private']), commands=['start', 'get'])
|
||||
async def get_replace(message: types.Message):
|
||||
if config.logging_user:
|
||||
register(
|
||||
user_id=message.from_user.id,
|
||||
username=message.from_user.username,
|
||||
first_name=str(message.from_user.first_name),
|
||||
last_name=message.from_user.last_name
|
||||
)
|
||||
|
||||
link = (
|
||||
'<a href="{}">Проверьте замены тут</a>'
|
||||
.format(config.bot("link"))
|
||||
)
|
||||
logging.info("User: {user_id} - {username}".format(
|
||||
user_id=str(message.from_user.id),
|
||||
username=str(message.from_user.username)
|
||||
))
|
||||
|
||||
try:
|
||||
data = get_about_replacements()
|
||||
await bot.send_message(
|
||||
message.chat.id,
|
||||
"Замены {date}\n{teacher}\nВыберите свою группу"
|
||||
.format(
|
||||
date=data["date"].lower(),
|
||||
teacher=str(data["another_teacher"]).title()
|
||||
),
|
||||
reply_markup=menu(data["data"])
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logging.error(str(e))
|
||||
err_msg = (
|
||||
"Техничиские шоколадки... "
|
||||
f"Скорее всего структура файла была изменена\n{link}"
|
||||
)
|
||||
await bot.send_message(
|
||||
message.chat.id,
|
||||
err_msg,
|
||||
parse_mode='HTML',
|
||||
disable_web_page_preview=True
|
||||
)
|
||||
|
||||
|
||||
@dp.message_handler(commands=['link'])
|
||||
async def get_link(message: types.Message):
|
||||
msg = (
|
||||
'<a href="{}">Проверьте замены тут</a>'
|
||||
.format(config.bot("link"))
|
||||
)
|
||||
await bot.send_message(
|
||||
message.chat.id,
|
||||
msg,
|
||||
parse_mode='HTML',
|
||||
disable_web_page_preview=True
|
||||
)
|
Reference in New Issue
Block a user