Telegram-бот на основе GPT-4
Telegram бота создаём через BotFather. Пишем /start, далее пишем /newbot.
Далее нам необходимо написать username бота. Пишем юзернейм, который оканчивается на "bot", либо "_bot"
После этого мы получаем API-Token бота, который нужен будет чуть позже
Для работы скрипта нужно получить Cookie Bing'a
Для получения cookie необходимо установить расширение, которое позволяет это сделать. Я использовал Cookie Editor.
Вы же можете использовать любой другой, в этом плане советовать ничего не буду, за Cookie Editor не ручаюсь.
После установки расширения включаем VPN, переходим на https://bing.com/, создаем почту Outlook(для удобства и быстроты), отправляем заявку на список ожидания (Сейчас вроде без него работает, но всё же).
После того, как доступ к чату с BingAI был получен, заходим на https://bing.com/chat, входим в созданный ранее аккаунт, далее заходим в установленное расширение и нажимаем на "Export".
После того, как мы нажали на "Export", необходимо создать файл "cookies.json" в папке, где находится файл скрипта.
После создания файла, вставляем туда то, что мы скопировали, когда нажали "Export".
Создаем файл с названием main.py, куда вставляем следующий код:
import asyncio import re from telebot.async_telebot import AsyncTeleBot from EdgeGPT import Chatbot BOT_TOKEN = 'token' # Вместо "token" вставить токен Telegram бота, который получили ранее bot = AsyncTeleBot(BOT_TOKEN) async def bing_chat(prompt): # Надо создать файл cookies.json в папке. ПУТЬ НЕ МЕНЯТЬ, ФАЙЛ cookies.json ДОЛЖЕН БЫТЬ В ПАПКЕ С СКРИПТОМ! gbot = Chatbot(cookiePath='./cookies.json') response_dict = await gbot.ask(prompt=prompt) return re.sub(r'\[\^\d\^\]', '', response_dict['item']['messages'][1]['text']) @bot.message_handler(func=lambda message: True) async def ask(message): try: prompt = message.text if not prompt: await bot.reply_to(message, "Пустой запрос") else: sent_message = await bot.reply_to(message, "Обработка запроса, ожидайте") bot_response = await bing_chat(prompt) await bot.edit_message_text(chat_id=sent_message.chat.id, message_id=sent_message.message_id, text=bot_response.replace('?\n\n', '')) except Exception as e: await bot.reply_to(message, "Bing по каким-то причинам решил остановить с вами диалог! Проверьте cookie!") # Такое случается, когда поднимается тема, которую Bing не хочет обсуждать async def main(): await bot.infinity_polling() if __name__ == "__main__": asyncio.run(main())
После вставки кода, заменяем token на токен бота Telegram, который мы получили ранее(токен должен быть в кавычках).
Путь к cookies.json не трогаем! Этот файл должен быть в папке с скриптом!
Внимание: На данном этапе у нас должно быть 2 файла в одной папке: "main.py" и "cookies.json", которые нужны будут и в Linux, и в Windows!
Инструкция на Windows крайне проста и кратка.
Для работы скрипта нам необходим Python. Установим 3.10.6.
Cкачиваем установочный файл с официального сайта:
Обязательно нажимаем на галочку "Add Python 3.10 to PATH".
Открываем консоль и прописываем следующую команду
pip install EdgeGPT --upgrade && pip install pyTelegramBotAPI && pip install aiohttp
После установки библиотек запускаем скрипт двойным нажатием по файлу с расширением .py, радуемся!
После того, как вы арендовали виртуальный сервер, вам необходимо на него зайти, делать мы это будем через Bitvise SSH Client.
Переходим по данной ссылке: bitvise.com/ssh-client-download , нажимаем на "Bitvise SSH Client installer", устанавливаем скачанный файл .exe.
После установки мы попадаем в такое меню:
Если установили Ubuntu, то вводим в поле Username "root"; В поле Host вводим айпи сервера, ставим Initial Method на "password", вводим пароль.
Теперь нажимаем "Log in", нажимаем "Accept and Save".
Теперь нажимаем "New Terminal Console" в левом меню.
Теперь мы попали в консоль сервера. Для понятности дальнейших действий: На Linux вставлять скопированное в буфер обмена необходимо нажатием правой кнопки мыши в консоли.
После запуска сервера вписываем в консоль следующее:
apt update && apt upgrade && apt install pip && apt install screen && sudo apt-get install python3.10
Этой командой мы установили Python нужной версии, установили pip, обновили apt, установили screen.
На Linux для работы скрипта 24/7 необходимо установить Screen, что мы сделали выше.
Теперь нажимаем "New SFTP windows":
Мы попали в файлы сервера, в папку "root".
Нажимаем правую кнопку мыши в файловой системе сервера, там кликаем на "Create folder", создаем папку с названием "bing".
Переходим в созданную папку двойным кликом.
Теперь переносим туда два файла: Скрипт с расширением .py, и cookies.json
Теперь возвращаемся в консоль сервера.
Далее прописываем следующую команду:
pip install EdgeGPT --upgrade && pip install pyTelegramBotAPI && pip install aiohttp
Теперь, если вы всё делали по гайду, мы прописываем следующую команду:
screen -S bing python3 main.py
Таким образом, если не произошла ошибка - вы запустили скрипт для работы 24/7, теперь просто закрываете терминал и выходите с сервера, проверяя работоспособность скрипта.