Merge pull request #1 from Whyverum/origin

Origin
This commit was merged in pull request #1.
This commit is contained in:
Whyverum
2024-12-18 12:29:16 +07:00
committed by GitHub
28 changed files with 360 additions and 90 deletions

View File

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

View File

@@ -2,19 +2,18 @@
# Инициализация пакета keyboards, для работы с клавиатурами # Инициализация пакета keyboards, для работы с клавиатурами
from aiogram import Router from aiogram import Router
from .start_kb import router as start_kb_router from .inline_kb import router as inline_kb_router
from .help_kb import router as help_kb_router from .reply_kb import router as reply_kb_router
from .more_kb import router as more_kb_router from .inline_kb import *
from .reply_kb import *
# Объявление роутера и настройка экспорта модулей # Объявление роутера и настройка экспорта модулей
__all__ = ("router",) __all__ = ("router", "inline_kb", "reply_kb",)
router = Router(name="kb_router") router = Router(name="kb_router")
# Список подключаемых роутеров сверху-вниз # Список подключаемых роутеров сверху-вниз
router.include_routers( router.include_routers(
start_kb_router, inline_kb_router,
help_kb_router, reply_kb_router,
more_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 aiogram import Router
from .callback_handlers import router as callback_handlers_router
from .commands.bot_command import set_commands from .commands.bot_command import set_commands
from .administration import router as admin_head_router from .administration import router as admin_head_router
from .commands import router as commands_head_router from .commands import router as commands_head_router
@@ -17,6 +18,7 @@ router = Router(name="main_router")
# Список подключаемых роутеров сверху-вниз # Список подключаемых роутеров сверху-вниз
router.include_routers( router.include_routers(
callback_handlers_router,
admin_head_router, admin_head_router,
commands_head_router, commands_head_router,
downloads_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 .more_cmd import router as more_router
from .exit_cmd import router as exit_router from .exit_cmd import router as exit_router
from .start_time_cmd import router as start_time_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, help_router,
more_router, more_router,
exit_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 import Router, types, F
from aiogram.filters import Command from aiogram.filters import Command
from BotLibrary import * 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",) __all__ = ("router", "cmd_help", "log_type",)

View File

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

View File

@@ -3,6 +3,7 @@
from aiogram import Router from aiogram import Router
from .messages import router as common_message_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( 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 BotLibrary import *
from aiogram import Router, types, F from aiogram import Router, types
from aiogram.types import ReplyKeyboardRemove
from BotCode.keyboards.start_kb import ButtonText
from ..downloads.download_avatar_all import download_avatar from ..downloads.download_avatar_all import download_avatar
# Настройка экспорта модулей и роутера # Настройка экспорта модулей и роутера
__all__ = ("router",) __all__ = ("router",)
router = Router(name="common_message_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() @router.message()
async def handle_all_messages(message: types.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 # Логирование стартов бота в bot_start.log
from datetime import datetime from datetime import datetime
from time import sleep from timer import sleep
from loguru import logger from loguru import logger
from config import ImportantPath, BotVariables from config import ImportantPath, BotVariables

View File

@@ -27,12 +27,12 @@ class LogsSet:
max_size = "500 MB" 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> " "<blue>PRIMO-{extra[log_type]}</blue> <red> | </red> "
"<red>{extra[user]} | </red> <level>{message}</level>") "<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>") "{extra[user]} | {message}</level>")

View File

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

View File