def question_menu(): """Меню "другие вопросы" """ q_choice = [[ KeyboardButton(text="Типичные вопросы" + create_smile("\\u2754")) ], [ KeyboardButton(text="Задать вопрос" + create_smile("\\ud83d\\udcdd")) ], [KeyboardButton(text="Моя должность" + create_smile("\\ud83d\\udcbc"))], [KeyboardButton(text="В меню")]] menu = ReplyKeyboardMarkup(keyboard=q_choice, resize_keyboard=True) return menu
def deadlines_menu(user=None): """меню для просмотра и создания событий""" q_choice = [[ KeyboardButton(text="Покажи мне события" + create_smile("\\ud83d\\uddd3")), ]] if user.id == admin_id: q_choice.append([ KeyboardButton(text="Создать событие" + create_smile("\\ud83d\\uddd3")) ]) q_choice.append([KeyboardButton(text="В меню")]) menu = ReplyKeyboardMarkup(keyboard=q_choice, resize_keyboard=True) return menu
def main_menu(user=None): """Главное меню""" keys = [[ KeyboardButton(text="Покажи мне документацию" + create_smile("\\ud83d\\udcc4")), KeyboardButton(text="Сайт компании" + create_smile("\\ud83c\\udf10")) ], [ KeyboardButton(text="Другие вопросы" + create_smile("\\u2753")), KeyboardButton(text="События" + create_smile("\\ud83d\\uddd3")) ]] if user: if user.id == admin_id: keys.append([KeyboardButton(text="Просмотреть новые заявки")]) menu = ReplyKeyboardMarkup(keyboard=keys, resize_keyboard=True) return menu
async def typical_questions(message: Message): """ Команда типичные вопросы To Do: сделать считывание типичных вопросов из файла :param message: :return: """ with codecs.open("..\\questions\\typical_q.json", "r", "utf_8_sig") as file: json_str = file.read() list_question_obj = json.loads(json_str) for i in range(len(list_question_obj)): question = create_smile("\\u2705") + list_question_obj[i]['question'] + "\n\n" + list_question_obj[i]['answer'] await message.answer(text=f"{question}") await message.answer(text="Если остались вопросы, вы можете задать их администатору.", reply_markup=back_to_menu())
# await message.answer(text="Запрос на вашу регистрацию направлен администратору", reply_markup=hide_menu()) @dispatcher.message_handler(Command("menu"), state=Authorized_states) @dispatcher.message_handler(Text("В меню"), state=Authorized_states) async def general_menu(message: Message): # , state: FSMContext """ Команда показать меню :param message: :return: """ # async with state.proxy() as userdata: # userdata.clear() await message.answer(text="Выбери действие", reply_markup=main_menu(message.from_user)) await States.COMMAND_STATE.set() @dispatcher.message_handler(Text("Сайт компании" + create_smile("\\ud83c\\udf10")), state=Authorized_states) async def go_to_web_site(message: Message): await message.answer(text=f"<a href=\"{ROSATOM_SITE}\">{ROSATOM_SITE}</a>", parse_mode="HTML") @dispatcher.errors_handler() async def on_error(update, error): print(error) return True
from aiogram.types import Message from aiogram.dispatcher.filters import Text from oauth2client.client import HttpAccessTokenRefreshError from app import dispatcher from main.config import States, Authorized_states, admin_id from main.helpers.menu import back_to_menu, deadlines_menu, hide_menu, main_menu from main.helpers.smiles import create_smile from deadlines.helpers.Calendar import Calendar from datetime import datetime import time @dispatcher.message_handler(Text("События" + create_smile("\\ud83d\\uddd3")), state=Authorized_states) async def show_calendar_menu(message: Message): """ Меню "События" (название может меняться) :param message: :return: """ await message.answer(text="Выбери действие: \n", reply_markup=deadlines_menu(message.from_user)) @dispatcher.message_handler(Text("Покажи мне события" + create_smile("\\ud83d\\uddd3")), state=Authorized_states) async def show_events(message: Message):
from aiogram.dispatcher import FSMContext from aiogram.types import Message from aiogram.dispatcher.filters import Text from main.config import admin_id, States, Authorized_states from app import bot, dispatcher from main.handlers import general_menu from main.helpers.menu import hide_menu, question_menu, back_to_menu from main.helpers.smiles import create_smile from DatabaseModels.Worker import Worker import json import codecs @dispatcher.message_handler(Text("Другие вопросы" + create_smile("\\u2753")), state=Authorized_states) async def other_questions(message: Message): """ Меню "Другие вопросы" (название может меняться) :param message: :return: """ await message.answer(text="Другие вопросы:\n", reply_markup=question_menu()) # Другие вопросы -> Типичные вопросы. Типичные вопросы можно прям тут описать - это нормальная практика. # Штук 6-8 будет достаточно @dispatcher.message_handler(Text("Типичные вопросы" + create_smile("\\u2754")), state=Authorized_states) async def typical_questions(message: Message): """ Команда типичные вопросы To Do: сделать считывание типичных вопросов из файла
from aiogram.types import Message from aiogram.dispatcher.filters import Text from oauth2client.client import HttpAccessTokenRefreshError from app import dispatcher from main.config_dev import States, Authorized_states, admin_id from main.helpers.menu import back_to_menu, deadlines_menu, hide_menu, main_menu from main.helpers.smiles import create_smile from deadlines.helpers.Calendar import Calendar from datetime import datetime import time @dispatcher.message_handler(Text("События" + create_smile("\\ud83d\\uddd3")), state=Authorized_states) async def show_calendar_menu(message: Message): """ Меню "События" (название может меняться) :param message: :return: """ await message.answer(text="Выбери действие: \n", reply_markup=deadlines_menu(message.from_user)) @dispatcher.message_handler(Text("Покажи мне события" + create_smile("\\ud83d\\uddd3")), state=Authorized_states) async def show_events(message: Message): """ Команда показывает события из общедоступного календаря :param message: :return:
from aiogram.types import Message from aiogram.dispatcher.filters import Text import os from app import dispatcher from main.helpers.menu import hide_menu, back_to_menu from documentation.helpers.send_document import upload_document, get_all_documents from main.helpers.smiles import create_smile from main.config import documents_directory, Authorized_states @dispatcher.message_handler(Text("Покажи мне документацию" + create_smile("\\ud83d\\udcc4")), state=Authorized_states) async def show_documentation(message: Message): """ Команда показать документацию :param message: :return: """ await message.answer(text="Вот список основных документов: \n", reply_markup=back_to_menu()) # directory = os.path.join("..", "documentation", "documentation_files") for file in get_all_documents(documents_directory): document = upload_document(os.path.join(documents_directory, file)) await message.answer_document(document=document)
from aiogram.dispatcher import FSMContext from aiogram.types import Message from aiogram.dispatcher.filters import Text from main.config_dev import admin_id, States, Authorized_states from app import bot, dispatcher from main.handlers import general_menu from main.helpers.menu import hide_menu, question_menu, back_to_menu from main.helpers.smiles import create_smile from DatabaseModels.Worker import Worker import json import codecs @dispatcher.message_handler(Text("Другие вопросы" + create_smile("\\u2753")), state=Authorized_states) async def other_questions(message: Message): """ Меню "Другие вопросы" (название может меняться) :param message: :return: """ await message.answer(text="Другие вопросы:\n", reply_markup=question_menu()) # Другие вопросы -> Типичные вопросы. Типичные вопросы можно прям тут описать - это нормальная практика. # Штук 6-8 будет достаточно @dispatcher.message_handler(Text("Типичные вопросы" + create_smile("\\u2754")), state=Authorized_states) async def typical_questions(message: Message):