Объедини этих двух ботов в один
import telebot
from gradio_client import Client
import time
import os

API_TOKEN = 'Ваш_Telegram_API_Token'
bot = telebot.TeleBot(API_TOKEN)
client = Client("https://techasad-midjourney-lite.hf.space/")

@bot.message_handler(func=lambda message: True)
def handle_message(message):
    if "draw" in message.text.lower():
        # Отправляем сообщение о начале генерации
        gen_message = bot.send_message(message.chat.id, "Идет генерация изображения, подождите...")
        
        # Генерируем изображение
        try:
            result = client.predict(message.text, api_name="/predict")
            
            # Отправляем изображение пользователю
            bot.send_photo(message.chat.id, result)
            
        except Exception as e:
            bot.send_message(message.chat.id, f"Произошла ошибка при генерации: {str(e)}")
        
        # Удаляем сообщение о генерации
        time.sleep(1)  # Даем немного времени, чтобы сообщение успело дойти
        bot.delete_message(message.chat.id, gen_message.message_id)

# Запуск бота
if __name__ == "__main__":
    bot.polling(none_stop=True)

import telebot
from telebot.types import InlineKeyboardButton, InlineKeyboardMarkup
from gradio_client import Client
import logging

# Конфигурация логирования для отладки
logging.basicConfig(level=logging.DEBUG)

# Ваш токен
TELEGRAM_BOT_TOKEN = '<TRUFFLEHOG_REDACTED_TELEGRAMBOTTOKEN>'

# ID администратора (замените на ваш реальный ID)
ADMIN_USER_ID = 1909284883  # Заменено на ваш ID

# Инициализация Telegram бота
bot = telebot.TeleBot(TELEGRAM_BOT_TOKEN)

# Инициализация клиентов Gradio с моделями
chatgpt_client = Client("yuntian-deng/ChatGPT")
gemini_client = Client("llamameta/Google-Gemini-Pro-2-latest-2025")

# Словарь для хранения выбора модели пользователя
user_model_choices = {}

# Словарь для хранения ID приветственных сообщений
welcome_message_ids = {}

# Хранилище для сообщений, ожидающих подтверждения
pending_broadcast = {}


# Функции для обработки моделей
def generate_text_response(message, model_choice):
    try:
        msg = bot.send_message(message.chat.id, "Идет генерация, подождите...🤖")

        if model_choice == "ChatGPT-4o":
            result = chatgpt_client.predict(
                inputs=message.text,
                top_p=1,
                temperature=1,
                chat_counter=0,
                chatbot=[],
                api_name="/predict"
            )
            response_text = process_chatgpt_response(result, message.text)
        elif model_choice == "Gemini 1.5 pro":
            result = gemini_client.predict(
                message=message.text,
                system_message="You are a friendly Chatbot created by balianone.com",
                max_tokens=18000,
                temperature_qwen=0.7,
                top_p_qwen=0.95,
                api_name="/chat"
            )
            response_text = process_gemini_response(result)
        else:
            response_text = "Не удалось определить модель."

        bot.delete_message(chat_id=message.chat.id, message_id=msg.message_id)
        logging.debug("API response: %s", response_text)
        bot.reply_to(message, response_text)
    except Exception as e:
        logging.error("Ошибка: %s", str(e))
        bot.reply_to(message, "Произошла ошибка при обработке запроса.")


def process_chatgpt_response(result, original_message):
    response_text = "Не удалось извлечь читаемый ответ от модели."

    if isinstance(result, tuple) and len(result) > 0:
        conversations = result[0]
        if isinstance(conversations, list):
            for conversation in conversations:
                if conversation and len(conversation) > 1:
                    user_input = conversation[0].strip().lower()
                    if user_input == original_message.strip().lower():
                        response_text = conversation[1]
                        break
    return response_text


def process_gemini_response(result):
    response_text = "Не удалось получить ответ от модели Gemini 1.5 pro."

    if isinstance(result, dict) and 'response' in result:
        response_text = result['response']
    elif isinstance(result, str):
        response_text = result
    return response_text


# Функция для рассылки сообщений
def broadcast_message(message_text, photo_id=None):
    for user_id in user_model_choices.keys():
        try:
            if photo_id:
                bot.send_photo(user_id, photo_id, caption=message_text)
            else:
                bot.send_message(user_id, message_text)
            logging.info(f"Сообщение отправлено пользователю {user_id}")
        except Exception as e:
            logging.error(f"Не удалось отправить сообщение пользователю {user_id}: {str(e)}")


# Обработчики сообщений
@bot.message_handler(commands=['start'])
def send_welcome(message):
    user_id = message.from_user.id

    # Получаем текущий выбор модели пользователя или устанавливаем по умолчанию
    model_choice = user_model_choices.get(user_id, "ChatGPT-4o")

    markup = InlineKeyboardMarkup()
    markup.row_width = 2
    markup.add(
        InlineKeyboardButton("ChatGPT-4o", callback_data="set_chatgpt"),
        InlineKeyboardButton("Gemini 1.5 pro", callback_data="set_gemini")
    )

    welcome_message = f"""Привет! Я — твой нейро-помощник, с поддержкой ChatGPT-4o и Gemini 1.5 pro. (Лучших языковых моделей на рынке!) Ты можешь меня использовать абсолютно бесплатно и без каких-либо ограничений!
Что я умею:
- Генерировать тексты на различные темы по вашему запросу.
- Придумывать шутки.
- И много-много еще чего...

Как использовать меня:
Просто отправьте мне текстовое сообщение с вашим запросом, например:

- Напиши код на языке программирования Python, который должен выводить надпись "Hello, world".

- Кто такой Майкл Джексон?

- Напиши доклад про египетские пирамиды.

Текущая модель: {model_choice}

Вы можете выбрать модель с помощью кнопок внизу:
"""

    sent_message = bot.reply_to(message, welcome_message, reply_markup=markup)
    welcome_message_ids[user_id] = sent_message.message_id  # Сохраняем ID приветственного сообщения


@bot.message_handler(commands=['broadcast'])
def handle_broadcast(message):
    user_id = message.from_user.id

    if user_id != ADMIN_USER_ID:
        bot.reply_to(message, "Вы не имеете права использовать эту команду.")
        return

    bot.reply_to(message, "Пожалуйста, отправьте сообщение для рассылки (текст или фото).")
    bot.register_next_step_handler(message, process_broadcast_message)


def process_broadcast_message(message):
    if message.content_type == 'text':
        message_text = message.text.strip()
        if message_text:
            pending_broadcast[message.chat.id] = {'text': message_text, 'photo_id': None}
            confirm_broadcast(message)
        else:
            bot.reply_to(message, "Вы отправили пустое сообщение. Рассылка отменена.")
    elif message.content_type == 'photo':
        photo_id = message.photo[-1].file_id
        caption = message.caption if message.caption else ""
        pending_broadcast[message.chat.id] = {'text': caption, 'photo_id': photo_id}
        confirm_broadcast(message)
    else:
        bot.reply_to(message, "Поддерживаются только текстовые сообщения и фото для рассылки.")


def confirm_broadcast(message):
    markup = InlineKeyboardMarkup()
    markup.row_width = 2
    markup.add(
        InlineKeyboardButton("Отправить", callback_data="confirm_broadcast"),
        InlineKeyboardButton("Отмена", callback_data="cancel_broadcast")
    )

    bot.reply_to(message, "Вы уверены, что хотите отправить эту рассылку?", reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
    user_id = call.from_user.id

    if call.data == "set_chatgpt":
        user_model_choices[user_id] = "ChatGPT-4o"
        update_welcome_message(call.message.chat.id, user_id)
    elif call.data == "set_gemini":
        user_model_choices[user_id] = "Gemini 1.5 pro"
        update_welcome_message(call.message.chat.id, user_id)
    elif call.data == "confirm_broadcast":
        if call.message.chat.id in pending_broadcast:
            broadcast_data = pending_broadcast.pop(call.message.chat.id)
            broadcast_message(broadcast_data['text'], broadcast_data['photo_id'])
            bot.reply_to(call.message, "Рассылка началась.")
        else:
            bot.reply_to(call.message, "Рассылка отменена.")
    elif call.data == "cancel_broadcast":
        if call.message.chat.id in pending_broadcast:
            pending_broadcast.pop(call.message.chat.id)
            bot.reply_to(call.message, "Рассылка отменена.")
        else:
            bot.reply_to(call.message, "Нет ожидающей рассылки.")

    bot.answer_callback_query(call.id, "Действие выполнено.")


def update_welcome_message(chat_id, user_id):
    # Получаем текущий выбор модели пользователя
    model_choice = user_model_choices.get(user_id, "ChatGPT-4o")

    markup = InlineKeyboardMarkup()
    markup.row_width = 2
    markup.add(
        InlineKeyboardButton("ChatGPT-4o", callback_data="set_chatgpt"),
        InlineKeyboardButton("Gemini 1.5 pro", callback_data="set_gemini")
    )

    welcome_message = f"""Привет! Я — твой нейро-помощник, с поддержкой ChatGPT-4o и Gemini 1.5 pro. (Лучших языковых моделей на рынке!) Ты можешь меня использовать абсолютно бесплатно и без каких-либо ограничений!
Что я умею:
Генерировать тексты на различные темы по вашему запросу.

Как использовать меня:
Просто отправьте мне текстовое сообщение с вашим запросом, например:

- Напиши код на языке программирования Python, который должен выводить надпись "Hello, world".

- Кто такой Майкл Джексон?

- Напиши доклад про египетские пирамиды.

Текущая модель: {model_choice}

Вы можете выбрать модель с помощью кнопок внизу:
"""

    # Обновляем приветственное сообщение
    bot.edit_message_text(chat_id=chat_id, message_id=welcome_message_ids[user_id], text=welcome_message, reply_markup=markup)


@bot.message_handler(func=lambda message: True)
def handle_message(message):
    user_id = message.from_user.id

    # Запоминаем user_id в словаре выбора модели
    if user_id not in user_model_choices:
        user_model_choices[user_id] = "ChatGPT-4o"

    # Получаем текущий выбор модели пользователя
    model_choice = user_model_choices.get(user_id, "ChatGPT-4o")

    generate_text_response(message, model_choice)


# Запуск бота
bot.polling()