95 lines
4.9 KiB
Python
95 lines
4.9 KiB
Python
#!/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) |