Origin #1

Merged
Whyverum merged 12 commits from origin into master 2024-12-18 08:29:16 +03:00
28 changed files with 360 additions and 90 deletions

View File

@@ -3,5 +3,5 @@
from .keyboards import *
from .routers import *
from .time import *
from .timer import *
from .inline import *

View File

@@ -2,19 +2,18 @@
# Инициализация пакета keyboards, для работы с клавиатурами
from aiogram import Router
from .start_kb import router as start_kb_router
from .help_kb import router as help_kb_router
from .more_kb import router as more_kb_router
from .inline_kb import router as inline_kb_router
from .reply_kb import router as reply_kb_router
from .inline_kb import *
from .reply_kb import *
# Объявление роутера и настройка экспорта модулей
__all__ = ("router",)
__all__ = ("router", "inline_kb", "reply_kb",)
router = Router(name="kb_router")
# Список подключаемых роутеров сверху-вниз
router.include_routers(
start_kb_router,
help_kb_router,
more_kb_router,
inline_kb_router,
reply_kb_router,
)

View File

@@ -0,0 +1,14 @@
# BotCode/keyboards/__init__.py
# Инициализация пакета keyboards, для работы с клавиатурами
from aiogram import Router
from .actor_kb import *
from .randnum_kb import *
# Объявление роутера и настройка экспорта модулей
__all__ = ("router", "actor_kb", "ButtonInl")
router = Router(name="inline_kb_router")
# Список подключаемых роутеров сверху-вниз
# router.include_routers()

View File

@@ -0,0 +1,54 @@
# BotCode/keyboards/start_kb.py
# Создания клавиатуры на команду: /start
from aiogram import Router
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder
# Создание роутера и настройка экспорта
__all__ = ("router", "get_actor_kb", "kb_text", "ButtonInl",)
kb_text = "ActorKb"
router = Router(name="actor_kb_router")
# Класс с параметрами кнопок
class ButtonInl:
tg_chn = "Канал в тг!"
tg_chn_url = "https://t.me/adeptusfiziks"
tg_chat = "Чатик в тг)"
tg_chat_url = "https://t.me/+T8mzbb_StRpiNDdi"
web_text = "Веселая игра скачать"
web_url = "https://gamejolt.com/games/UndertaleYellow/136925"
random_site = "Рандомный сайт"
random_site_cbd = "random_site_cbd"
random_num_dice = "Рандомное число"
random_num_dice_cbd = "random_num_dice_cbd"
random_num_modal = "Рандомный виджет"
random_num_modal_cdb = "random_num_modal_cdb"
# Функция создания клавиатуры на команду: /actor
def get_actor_kb() -> InlineKeyboardMarkup:
# Создаем билдер клавиатуры
builder = InlineKeyboardBuilder()
# Добавляем кнопки, группируя их по строкам
builder.button(text=ButtonInl.tg_chn, url=ButtonInl.tg_chn_url)
builder.button(text=ButtonInl.tg_chat, url=ButtonInl.tg_chat_url)
builder.button(text=ButtonInl.web_text, url=ButtonInl.web_url)
builder.button(text=ButtonInl.random_site, callback_data=ButtonInl.random_site_cbd)
builder.button(text=ButtonInl.random_num_dice, callback_data=ButtonInl.random_num_dice_cbd)
builder.button(text=ButtonInl.random_num_modal, callback_data=ButtonInl.random_num_modal_cdb)
builder.adjust(2, 1)
return builder.as_markup()

View File

@@ -0,0 +1,27 @@
# BotCode/keyboards/start_kb.py
# Создания клавиатуры на команду: /start
from aiogram import Router
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder
# Создание роутера и настройка экспорта
__all__ = ("router", "get_randnum_kb", "kb_text", "ButtonInl",)
kb_text = "RandNumKb"
router = Router(name="actor_kb_router")
# Класс с параметрами кнопок
class ButtonInl:
mark_cbd = "mark_cbd"
# Функция создания клавиатуры на команду: /actor
def get_randnum_kb(text_msg="Получить ответ") -> InlineKeyboardMarkup:
# Создаем билдер клавиатуры
builder = InlineKeyboardBuilder()
# Добавляем кнопки, группируя их по строкам
builder.button(text=text_msg, callback_data=ButtonInl.mark_cbd)
return builder.as_markup()

View File

@@ -0,0 +1,20 @@
# BotCode/keyboards/__init__.py
# Инициализация пакета keyboards, для работы с клавиатурами
from aiogram import Router
from .start_kb import router as start_kb_router
from .help_kb import router as help_kb_router
from .more_kb import router as more_kb_router
# Объявление роутера и настройка экспорта модулей
__all__ = ("router",)
router = Router(name="reply_kb_router")
# Список подключаемых роутеров сверху-вниз
router.include_routers(
start_kb_router,
help_kb_router,
more_kb_router,
)

View File

@@ -3,6 +3,7 @@
# Пакет старых файлов отключен!!
from aiogram import Router
from .callback_handlers import router as callback_handlers_router
from .commands.bot_command import set_commands
from .administration import router as admin_head_router
from .commands import router as commands_head_router
@@ -17,6 +18,7 @@ router = Router(name="main_router")
# Список подключаемых роутеров сверху-вниз
router.include_routers(
callback_handlers_router,
admin_head_router,
commands_head_router,
downloads_head_router,

View File

@@ -0,0 +1,13 @@
from aiogram import Router
from .actor_kb_cb import router as actor_kb_cb_router
from .randnum_kb_cb import router as randnum_kb_cb_router
__all__ = ("router", )
router = Router(name="callback_handlers")
# Список подключаемых роутеров сверху-вниз
router.include_routers(
actor_kb_cb_router,
randnum_kb_cb_router,
)

View File

@@ -0,0 +1,30 @@
from random import randint
from aiogram import Router, F
from aiogram.types import CallbackQuery
from keyboards.inline_kb.actor_kb import ButtonInl
router = Router(name="actor_kb_cb_router")
@router.callback_query(F.data == ButtonInl.random_site_cbd)
async def random_site_cb(callback_query: CallbackQuery):
bot_me = await callback_query.bot.me()
await callback_query.answer(
url=f"t.me/{bot_me.username}?start={randint(1, 500)}"
)
@router.callback_query(F.data == ButtonInl.random_num_dice_cbd)
async def random_num_dice_cb(callback_query: CallbackQuery):
await callback_query.answer(
text = f"Твое рандомное число: {randint(1, 21)}",
cache_time=1,
)
@router.callback_query(F.data == ButtonInl.random_num_modal_cdb)
async def random_num_dice_modal_cb(callback_query: CallbackQuery):
await callback_query.answer(
text = f"Членов в жопе у Степана: {randint(1, 2200)}",
show_alert=True,
)

View File

@@ -0,0 +1,26 @@
from random import randint
from aiogram import Router, F
from aiogram.types import CallbackQuery
from keyboards.inline_kb.randnum_kb import ButtonInl, get_randnum_kb
router = Router(name="randnum_kb_cb_router")
@router.callback_query(F.data == ButtonInl.mark_cbd)
async def random_site_cb(callback_query: CallbackQuery):
await callback_query.answer()
# Новый текст и клавиатура
new_text = f"Какая оценка у тебя будет сегодня: {randint(1, 5)}"
new_reply_markup = get_randnum_kb("Получить ответ от Таро")
# Текущий текст и клавиатура
current_text = callback_query.message.text
current_reply_markup = callback_query.message.reply_markup
# Проверяем, отличаются ли текст и клавиатура
if current_text != new_text or current_reply_markup != new_reply_markup:
await callback_query.message.edit_text(
text=new_text,
reply_markup=new_reply_markup,
)

View File

@@ -7,6 +7,8 @@ from .help_cmd import router as help_router
from .more_cmd import router as more_router
from .exit_cmd import router as exit_router
from .start_time_cmd import router as start_time_router
from .actor_cmd import router as actor_router
from .randnum_cmd import router as randnum_router
# Объявление роутера и настройка экспорта модулей
@@ -20,6 +22,8 @@ router.include_routers(
help_router,
more_router,
exit_router,
actor_router,
randnum_router,
)

View File

@@ -0,0 +1,41 @@
# BotCode/routers/commands/user_cmd/actor_cmd.py
# разработка
from aiogram import Router, types, F
from aiogram.filters import Command
from BotLibrary import *
from keyboards.inline_kb.actor_kb import get_actor_kb
# Создание роутера и настройка экспорта модулей
__all__ = ("router", "cmd_actor", "log_type",)
router = Router(name="actor_router")
log_type = "Actor"
# Список ключевых слов для команды
keywords = ["actor", "фсещк",]
# Обработчик команды /actor
@router.message(Command(*keywords, prefix=BotEdit.prefixs, ignore_case=True))
@router.message(F.text.lower().in_(keywords))
async def cmd_actor(message: types.Message):
try:
# Вывод сообщения пользователю
text = f"использовал(а) команду /{log_type.lower()}"
markup = get_actor_kb()
await message.reply(
text="Всякое разное для тебя",
reply_markup=markup,
)
# Активация логгера
await cmd_logginger(message, log_type, text)
return text
# Проверка на ошибку и ее логирование
except Exception as e:
text_error = await error_cmd_logginger(message, log_type, e)
return text_error

View File

@@ -4,7 +4,7 @@
from aiogram import Router, types, F
from aiogram.filters import Command
from BotLibrary import *
from BotCode.keyboards.help_kb import get_help_kb
from keyboards.reply_kb.help_kb import get_help_kb
# Создание роутера и экспорта модулей
__all__ = ("router", "cmd_help", "log_type",)

View File

@@ -4,7 +4,7 @@
from aiogram import Router, types, F
from aiogram.filters import Command
from BotLibrary import *
from BotCode.keyboards.more_kb import get_more_kb
from keyboards.reply_kb.more_kb import get_more_kb
# Создание роутера и экспорта модулей
__all__ = ("router", "cmd_start", "log_type",)

View File

@@ -0,0 +1,30 @@
# BotCode/routers/commands/user_cmd/randnum_cmd.py
# Работа с командой /randnum, для рандомного числа с редактированием сообщения
from aiogram import Router, types, F
from aiogram.filters import Command
from BotLibrary import *
from keyboards.inline_kb.randnum_kb import get_randnum_kb
# Создание роутера и экспорта модулей
__all__ = ("router", "cmd_randnum", "log_type",)
router = Router(name="randnum_router")
log_type = "Randnum"
# Список ключевых слов для команды
keywords = ["кфтвтгь", "randnum",]
# Хэндлер на команду /randnum
@router.message(Command(*keywords, prefix=BotEdit.prefixs, ignore_case=True))
@router.message(F.text.lower().in_(keywords))
async def cmd_randnum(message: types.Message):
text = "Работа с рандомом оценок!"
await message.reply(
text="Вы хотите узнать вашу оценку на сегодня?!",
reply_markup=get_randnum_kb("Хочу: ТЫК"),
)
# Активация логгера
await cmd_logginger(message, log_type, text)
return text

View File

@@ -2,9 +2,9 @@
# Работа с командой /start, для запуска бота
from aiogram import Router, types, F
from aiogram.filters import Command
from aiogram.filters import Command, CommandStart
from BotLibrary import *
from BotCode.keyboards.start_kb import get_start_kb
from keyboards.reply_kb.start_kb import get_start_kb
# Создание роутера и настройка экспорта модулей
__all__ = ("router", "cmd_start", "log_type",)
@@ -19,12 +19,15 @@ keywords = ["start", "старт", "запуск", "пуск", "on", "вкл", "
# Обработчик команды /start
@router.message(Command(*keywords, prefix=BotEdit.prefixs, ignore_case=True))
@router.message(F.text.lower().in_(keywords))
@router.message(CommandStart())
async def cmd_start(message: types.Message):
try:
# Вывод сообщения пользователю
text = f"использовал(а) команду /{log_type.lower()}"
await message.reply(text=f"Стартовый бот!", reply_markup=get_start_kb())
print(f"Текст запроса: {repr(message.text)}")
# Активация логгера
await cmd_logginger(message, log_type, text)
return text

View File

@@ -3,6 +3,7 @@
from aiogram import Router
from .messages import router as common_message_router
from .phrase import router as phrase_message_router
# Объявление роутера и настройка экспорта модулей
@@ -12,8 +13,8 @@ router = Router(name="users_head_router")
# Список подключаемых роутеров сверху-вниз
router.include_routers(
common_message_router,
phrase_message_router,
)
# Идет самым последним, если другие роутеры не сработали
# router.include_router(common_message_router)
router.include_router(common_message_router)

View File

@@ -3,82 +3,14 @@
# А также нескольких определенных сообщений (Перенести в иной файл!!!)
from BotLibrary import *
from aiogram import Router, types, F
from aiogram.types import ReplyKeyboardRemove
from aiogram import Router, types
from BotCode.keyboards.start_kb import ButtonText
from ..downloads.download_avatar_all import download_avatar
# Настройка экспорта модулей и роутера
__all__ = ("router",)
router = Router(name="common_message_router")
# Ответ бота на кнопку или сообщение: "Привет!"
@router.message(F.text.lower() == ButtonText.Hello.lower())
async def bye(message: types.Message):
log_type = "Start_Button"
text_message = f"Привет, я бот. А ты кто?"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на кнопку или сообщение: "Помощь!"
@router.message(F.text.lower() == ButtonText.Help.lower())
async def help_message(message: types.Message):
log_type = "Help_Button"
text_message = f"Привет, я надеюсь помогу тебе... Лучше напиши /help.."
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на кнопку или сообщение: "Пока-пока!"
@router.message(F.text.lower() == ButtonText.Bye.lower())
async def bye_message(message: types.Message):
log_type = "Messages"
text_message = f"Надеюсь скоро увидимся! Захочешь поговорить нажми на /start!"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
reply_markup=ReplyKeyboardRemove(),
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на сообщение: "Кошмар"
@router.message(F.text.lower() == "кошмар")
async def scary_message(message: types.Message):
log_type = "Messages"
text_message = f"Кошмар, тот еще!"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Хэндлер на все сообщения и записывает данные
@router.message()
async def handle_all_messages(message: types.Message):

View File

@@ -0,0 +1,75 @@
from aiogram import Router, types, F
from aiogram.types import ReplyKeyboardRemove
from BotLibrary import find_chat_id, types_message, common_msg_logginger
from keyboards.reply_kb.start_kb import ButtonText
# Настройка экспорта модулей и роутера
__all__ = ("router",)
router = Router(name="phrase_message_router")
# Ответ бота на кнопку или сообщение: "Привет!"
@router.message(F.text.lower() == ButtonText.Hello.lower())
async def hello_message(message: types.Message):
log_type = "Start_Button"
text_message = f"Привет, я бот. А ты кто?"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на кнопку или сообщение: "Помощь!"
@router.message(F.text.lower() == ButtonText.Help.lower())
async def help_message(message: types.Message):
log_type = "Help_Button"
text_message = f"Привет, я надеюсь помогу тебе... Лучше напиши /help.."
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на кнопку или сообщение: "Пока-пока!"
@router.message(F.text.lower() == ButtonText.Bye.lower())
async def bye_message(message: types.Message):
log_type = "Messages"
text_message = f"Надеюсь скоро увидимся! Захочешь поговорить нажми на /start!"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
reply_markup=ReplyKeyboardRemove(),
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message
# Ответ бота на сообщение: "Кошмар"
@router.message(F.text.lower() == "кошмар")
async def scary_message(message: types.Message):
log_type = "Messages"
text_message = f"Кошмар, тот еще!"
name = find_chat_id(message)
message_type = types_message(message)
await message.reply(
text=text_message,
)
await common_msg_logginger(message, name, message_type, log_type)
return text_message

View File

@@ -1,2 +0,0 @@
# BotCode/time/__init__.py
# Инициализация пакета time, для временных операций (в разработке)

View File

@@ -0,0 +1,2 @@
# BotCode/timer/__init__.py
# Инициализация пакета timer, для временных операций (в разработке)

View File

@@ -3,7 +3,7 @@
# Логирование стартов бота в bot_start.log
from datetime import datetime
from time import sleep
from timer import sleep
from loguru import logger
from config import ImportantPath, BotVariables

View File

@@ -27,12 +27,12 @@ class LogsSet:
max_size = "500 MB"
# Шаблон логов для обычного логгера
info_text = ("<green>{time:YYYY-MM-DD HH:mm:ss}</green> <red> | </red> "
info_text = ("<green>{timer:YYYY-MM-DD HH:mm:ss}</green> <red> | </red> "
"<blue>PRIMO-{extra[log_type]}</blue> <red> | </red> "
"<red>{extra[user]} | </red> <level>{message}</level>")
# Шаблон логов для логгера-ошибок
error_text = ("<level>{time:YYYY-MM-DD HH:mm:ss} | ERROR-{extra[log_type]} | "
error_text = ("<level>{timer:YYYY-MM-DD HH:mm:ss} | ERROR-{extra[log_type]} | "
"{extra[user]} | {message}</level>")

View File

@@ -4,7 +4,6 @@
from art import *
from colorama import *
from termcolor import *
import cowsay
# Подключение ANSI в стандартное Windows_cmd
just_fix_windows_console()

View File