This commit is contained in:
2024-06-17 10:53:33 +03:00
commit a1da810c2d
22 changed files with 1253 additions and 0 deletions

95
unitib.py Normal file
View File

@@ -0,0 +1,95 @@
#!/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)