• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Пишем и подключаем ChatGPT к профилю Telegram с Premium

admin

#root
Администратор
Регистрация
20.01.2011
Сообщения
7,665
Розыгрыши
0
Реакции
135


В данной статье предоставлен очень укороченная версия кода, которая не включает в себя сохранения контекста прошлых сообщений, а так же не сохраняет количество активных подключений бота к профилям и не обновляет их состояния. Этот код сделан лишь для того, чтобы показать как можно реализовать новые фишки Telegram Premium.

1. Покупаем Telegram Premium, если его у вас еще нет
2. Создаем бота в Для просмотра ссылки Войди или Зарегистрируйся и включаем в нём
Business mode:

3. Подключаем своего бота к профилю Telegram и выбираем чаты, где он будет работать (или же ничего не делаем и он будет отвечать всем кто ему пишет):



Пишем код на Python
1. Скачиваем Python: Для просмотра ссылки Войди или Зарегистрируйся (у меня установлена версия Python 3.11.6) (ПРИ УСТАНОВКЕ PYTHON НЕ ЗАБУДЬТЕ ПОСТАВИТЬ ГАЛОЧКУ ADD TO PATH)
2. Открываем консоль и устанавливаем необходимые модули:
[srci]⁡pip install aiogram[/srci] ⁡
[srci]⁡pip install g4f[/srci] ⁡
3. Создаем файл с расширением
.py и вставляем мой тестовый код:
Python:
import asyncio

from g4f.client import AsyncClient
from g4f.Provider import Ecosia

from aiogram import (Router, Bot, Dispatcher,
                     F, types)
import logging

router = Router(name=__name__)
lock = asyncio.Lock()

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


async def response_gpt(message):
    client = AsyncClient(
        provider=Ecosia
    )
# Провайдер Ecosia не работает в РФ, если вы не из РФ или сервер не РФ, можете неиспользовать прокси и удалить строку ниже
    client.proxies = {
        "http": "http://user:pass@ip:port" ,
        "https": "http://user:pass@ip:port"
    }

    try:
        completion = await client.chat.completions.create(
            max_tokens=4096,
            model="",
            messages=message,
        )

        return completion.choices[0].message.content

    except Exception as ex:
        print(ex)
        return None


@router.business_message(F.text)
async def handler_message(message: types.Message):
    async with lock:
        user_id = message.chat.id
        logger.info(f"Received business message from {user_id}: {message.text}")

        messages = [
            {"role": "system",
             "content": "Привет! Ты - ИИ-помощник для бизнеса в Telegram. Отвечай на вопросы пользователей"},
            {"role": "user", "content": message.text}
        ]

        response = await response_gpt(messages)

        if response is None:
            await message.answer("Я не понимаю вас. Попробуй еще раз.")
        else:
            logger.info(f"Response sent to business chat: {response}")
            await message.answer(response)


async def main() -> None:
    bot = Bot(token="TOKEN")
    dp = Dispatcher()

    dp.include_router(router)

    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)


asyncio.run(main())
4. Вместо [srci]⁡bot = Bot(token="TOKEN")[/srci] ⁡ , там где TOKEN - вставляем [tooltip=152]токен[/tooltip] вашего бота, который вы получили у BotFather
5. Запускаем скрипт и проверяем. Можно написать с другого аккаунта или же с вашего аккаунта, так как боту без разницы, он ловит все сообщения, даже от вашего лица.
6. Для теста можете добавить уже созданного бота в настройках Telegram Business. Я буду его хостить какое - то время: Для просмотра ссылки Войди или Зарегистрируйся

Важная информация:
По хорошему лучше подключать оригинальный ChatGPT, а не китайские аналоги, но увы возиться с лимитами и прочей ерундой я не хотел. Можете в GitHub модуля G4F поискать более лучшие провайдеры, чем установил в коде я: Для просмотра ссылки Войди или Зарегистрируйся
 
Activity
So far there's no one here