admin

Run Settings
LanguagePython
Language Version
Run Command
import asyncio from aiogram import Bot, Dispatcher, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters.builtin import IDFilter class AdminConsole(StatesGroup): admin = State() new_text = State() confirm_new_text = State() async def write_upcoming(text): with open("upcoming.txt", 'w', encoding="utf-8") as up: up.write(text) async def admin_console(message: types.Message): await AdminConsole.admin.set() available_actions = ["Обновить текст 'Что дальше?'", "Отправить сообщение всем пользователям"] keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3) keyboard.add(*available_actions) await message.answer("Здравствуй, хозяин! Что ты хочешь сделать?", reply_markup=keyboard) async def update_upcoming(message: types.Message, state: FSMContext): await AdminConsole.new_text.set() await message.answer("Введи новое сообщение:", reply_markup=types.ReplyKeyboardRemove()) async def confirm_upcoming(message: types.Message, state: FSMContext): await AdminConsole.confirm_new_text.set() await state.update_data(new_text=message.text.lower()) available_actions = ["Да", "Нет, хочу отредактировать"] keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3) keyboard.add(*available_actions) user_data = await state.get_data() await message.answer(f"Я прочитал: {user_data['new_text']}. Всё верно?", reply_markup=keyboard) async def update_finished(message: types.Message, state: FSMContext): user_data = await state.get_data() await write_upcoming(user_data['new_text']) message.answer("Успешно!") await AdminConsole.admin.set() def register_handlers_admin(dp: Dispatcher): dp.register_message_handler(admin_console, IDFilter(user_id="my_id"), commands="admin", state="*") dp.register_message_handler(update_upcoming, state=AdminConsole.admin, text="Обновить текст 'Что дальше?'") dp.register_message_handler(update_upcoming, state=AdminConsole.confirm_new_text, text="Нет, хочу отредактировать'") dp.register_message_handler(confirm_upcoming, state=AdminConsole.new_text) dp.register_message_handler(update_finished, state=AdminConsole.confirm_new_text, text="Нет, хочу отредактировать'") async def main(): # Настройка логирования в stdout ''' logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", ) logger.error("Starting bot")''' logging.basicConfig(level=logging.INFO) # Парсинг файла конфигурации # config = load_config("config/bot.ini") # Объявление и инициализация объектов бота и диспетчера API_TOKEN = 'my_token' bot = Bot(token=API_TOKEN, parse_mode=types.ParseMode.HTML) dp = Dispatcher(bot, storage=MemoryStorage()) # Регистрация хэндлеров register_handlers_admin(dp) # Установка команд бота # await set_commands(bot) # Запуск поллинга await dp.skip_updates() await dp.start_polling() if __name__ == '__main__': asyncio.run(main())
Editor Settings
Theme
Key bindings
Full width
Lines