Files
BOTKlining/unitib.py
2024-06-17 10:53:33 +03:00

95 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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)