#!/usr/bin/python # -*- coding: utf-8 -*- import logging import os from aiogram import Bot, Dispatcher, types from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton from aiogram.utils import executor # Ваш токен от BotFather API_TOKEN = '7437033939:AAHmX2KvRecp0Y2uKFlldWGtoZXgNvRKRUk' # Настройка логирования с записью в файл logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('bot_uniti_logs.log'), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) # Инициализация бота и диспетчера bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # Переменная для хранения состояния пользователя user_states = {} # Функция для создания клавиатуры с inline-кнопками def get_inline_keyboard(): keyboard = InlineKeyboardMarkup() button1 = InlineKeyboardButton("Скачать с YouTube", callback_data="action_2") button2 = InlineKeyboardButton("Отправить в группы", callback_data="action_1") button3 = InlineKeyboardButton("Скачать с Instagram", callback_data="action_3") keyboard.add(button1, button3) keyboard.add(button2) return keyboard # Функция для создания клавиатуры с кнопкой отмены def get_cancel_keyboard(): keyboard = InlineKeyboardMarkup() cancel_button = InlineKeyboardButton("Отмена", callback_data="cancel") keyboard.add(cancel_button) return keyboard # Функция для создания клавиатуры с кнопкой "Назад" def get_back_keyboard(): keyboard = InlineKeyboardMarkup() back_button = InlineKeyboardButton("Назад", callback_data="back") keyboard.add(back_button) return keyboard # Обработчик команды /start @dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет! Я бот с inline-кнопками. Выберите действие:", reply_markup=get_inline_keyboard()) # Обработчик нажатий на inline-кнопки @dp.callback_query_handler(lambda c: c.data and c.data.startswith('action_')) async def process_callback_button(callback_query: types.CallbackQuery): action = callback_query.data if action == 'action_1': await bot.answer_callback_query(callback_query.id, text='Вы выбрали действие 1!') # Отправить ссылку на другого бота keyboard = InlineKeyboardMarkup() keyboard.add(InlineKeyboardButton("Перейти в бот перессылки", url="https://t.me/TGSendMessageFiPiBot")) await bot.send_message(callback_query.from_user.id, "Нажмите на кнопку, чтобы перейти в другой бот.", reply_markup=keyboard) elif action == 'action_2': await bot.answer_callback_query(callback_query.id, text='Вы выбрали действие 2!') # Отправить ссылку на другого бота keyboard = InlineKeyboardMarkup() keyboard.add(InlineKeyboardButton("Перейти в бота скачиваний с YouTube", url="https://t.me/haligali_bot")) await bot.send_message(callback_query.from_user.id, "Нажмите на кнопку, чтобы перейти в другой бот.", reply_markup=keyboard) elif action == 'action_3': await bot.answer_callback_query(callback_query.id, text='Вы выбрали действие 3!') # Отправить ссылку на другого бота keyboard = InlineKeyboardMarkup() keyboard.add(InlineKeyboardButton("Перейти в бота скачиваний с Instagram", url="https://t.me/irktestass_bot")) await bot.send_message(callback_query.from_user.id, "Нажмите на кнопку, чтобы перейти в другой бот.", reply_markup=keyboard) await bot.edit_message_reply_markup(callback_query.from_user.id, callback_query.message.message_id, reply_markup=None) # Обработчик нажатия на кнопку "Отмена" или "Назад" @dp.callback_query_handler(lambda c: c.data and (c.data == 'cancel' or c.data == 'back')) async def process_cancel_or_back_button(callback_query: types.CallbackQuery): user_states[callback_query.from_user.id] = None await bot.answer_callback_query(callback_query.id, text='Действие отменено.') await bot.send_message(callback_query.from_user.id, "Действие отменено.", reply_markup=get_inline_keyboard()) if __name__ == '__main__': logger.info('Start polling.') executor.start_polling(dp, skip_updates=True)