![Бот на Python, использующий BingAI для Telegram [Гайд]](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fthumbnails%2F2023%2F04%2F10%2Fimage-901ecd9686.png&w=3840&q=90)
Бот на Python, использующий BingAI для Telegram [Гайд]
В данной статье мы будем описывать, как можно использовать сервис искусственного интеллекта Bing AI для создания бота в Telegram. Мы будем использовать библиотеку aiogram на Python, которая позволяет создавать ботов для Telegram.
Если вы хотите выразить благодарность автору сайта, статей и курса по Django, вы можете сделать это по ссылке ниже:
С ее помощью мы настроим обработчик сообщений и добавим функцию для получения ответа от Bing AI.
В этом гайде мы должны использовать Edge браузер для получения данных от Bing AI.
Создаем проект на Python
Нам необходимо создать проект с виртуальным окружением, поэтому создаем в любой удобной для Вас IDE.
Я воспользуюсь VSCODE. Создам папку проекта и открою ее в VSCODE. Из под Windows:
Создание виртуального окружения: py -m venv venv
, активируем его с помощью команды: venv/Scripts/activate
Если из под Linux:
Создание виртуального окружения: python3 -m venv venv
, активация:
source venv/bin/activate
.
Далее создадим файл main.py и рядом папку data, в которой создадим файл cookies.json.

Получение cookies с BingAI (только с браузера Edge)
Первым, что необходимо сделать, это получить cookies с Bing AI чата. Для этого скачиваем расширение Cookie Editor для браузера.

Далее переходим в сам чат с Bing AI, чтобы войти в чат с нейросетью BingAI вы можете ознакомиться с этой статьей.
Нажимаем на наше расширение, вы увидите различные данные с сайта Microsoft и Bing, в расширении нажимайте кнопку export.

Далее эти куки сохраняется в буфере обмена (т.е копируются), и их нужно вставить в файл cookies.json который мы создали ранее.

Установка модулей aiogram и EdgeGPT
Далее нам необходимо установить модули для телеграм бота и Bing AI, для этого находясь в активированном виртуальном окружении в терминале прописываем следующую команду: pip install EdgeGPT aiogram
.
Результат установки:
Collecting EdgeGPT
Using cached EdgeGPT-0.1.22.1-py3-none-any.whl (9.9 kB)
Collecting aiogram
Using cached aiogram-2.25.1-py3-none-any.whl (203 kB)
Collecting httpx
Using cached httpx-0.23.3-py3-none-any.whl (71 kB)
Collecting websockets
Using cached websockets-11.0.1-cp311-cp311-win_amd64.whl (124 kB)
Collecting rich
Using cached rich-13.3.3-py3-none-any.whl (238 kB)
Collecting certifi
Using cached certifi-2022.12.7-py3-none-any.whl (155 kB)
Collecting prompt-toolkit
Using cached prompt_toolkit-3.0.38-py3-none-any.whl (385 kB)
Collecting regex
Using cached regex-2023.3.23-cp311-cp311-win_amd64.whl (267 kB)
Collecting requests
Using cached requests-2.28.2-py3-none-any.whl (62 kB)
Collecting BingImageCreator>=0.1.1.1
Using cached BingImageCreator-0.1.2.1-py3-none-any.whl (6.4 kB)
Collecting aiohttp<3.9.0,>=3.8.0
Using cached aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
Collecting Babel<2.10.0,>=2.9.1
Using cached Babel-2.9.1-py2.py3-none-any.whl (8.8 MB)
Collecting magic-filter>=1.0.9
Using cached magic_filter-1.0.9-py3-none-any.whl (9.3 kB)
Collecting attrs>=17.3.0
Using cached attrs-22.2.0-py3-none-any.whl (60 kB)
Collecting charset-normalizer<4.0,>=2.0
Using cached charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
Collecting multidict<7.0,>=4.5
Using cached multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
Collecting async-timeout<5.0,>=4.0.0a3
Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
Using cached yarl-1.8.2-cp311-cp311-win_amd64.whl (55 kB)
Collecting frozenlist>=1.1.1
Using cached frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
Collecting aiosignal>=1.1.2
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting pytz>=2015.7
Using cached pytz-2023.3-py2.py3-none-any.whl (502 kB)
Collecting httpcore<0.17.0,>=0.15.0
Using cached httpcore-0.16.3-py3-none-any.whl (69 kB)
Collecting rfc3986[idna2008]<2,>=1.3
Using cached rfc3986-1.5.0-py2.py3-none-any.whl (31 kB)
Collecting sniffio
Using cached sniffio-1.3.0-py3-none-any.whl (10 kB)
Collecting wcwidth
Using cached wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
Collecting idna<4,>=2.5
Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.15-py2.py3-none-any.whl (140 kB)
Collecting markdown-it-py<3.0.0,>=2.2.0
Using cached markdown_it_py-2.2.0-py3-none-any.whl (84 kB)
Collecting pygments<3.0.0,>=2.13.0
Using cached Pygments-2.14.0-py3-none-any.whl (1.1 MB)
Collecting h11<0.15,>=0.13
Using cached h11-0.14.0-py3-none-any.whl (58 kB)
Collecting anyio<5.0,>=3.0
Using cached anyio-3.6.2-py3-none-any.whl (80 kB)
Collecting mdurl~=0.1
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: wcwidth, rfc3986, pytz, websockets, urllib3, sniffio, regex, pygments, prompt-toolkit, multidict, mdurl, magic-filter, idna, h11, frozenlist, charset-normalizer, certifi, Babel, attrs, async-timeout, yarl, requests, markdown-it-py, anyio, aiosignal, rich, httpcore, BingImageCreator, aiohttp, httpx, aiogram, EdgeGPT
Successfully installed Babel-2.9.1 BingImageCreator-0.1.2.1 EdgeGPT-0.1.22.1 aiogram-2.25.1 aiohttp-3.8.4 aiosignal-1.3.1 anyio-3.6.2 async-timeout-4.0.2 attrs-22.2.0 certifi-2022.12.7 charset-normalizer-3.1.0 frozenlist-1.3.3 h11-0.14.0 httpcore-0.16.3 httpx-0.23.3 idna-3.4 magic-filter-1.0.9 markdown-it-py-2.2.0 mdurl-0.1.2 multidict-6.0.4 prompt-toolkit-3.0.38 pygments-2.14.0 pytz-2023.3 regex-2023.3.23 requests-2.28.2 rfc3986-1.5.0 rich-13.3.3 sniffio-1.3.0 urllib3-1.26.15 wcwidth-0.2.6 websockets-11.0.1 yarl-1.8.2
[notice] A new release of pip available: 22.3 -> 23.0.1
[notice] To update, run: python.exe -m pip install --upgrade pip
Пишем код для работы нейросети Bing AI в Telegram
Теперь настал момент написания кода, переходим в наш main.py, и пишем следующий код:
from EdgeGPT import Chatbot
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
telegram_token = 'Ваш токен в телеграмм'
async def bing_chat(prompt):
# Функция получения ответа от BingAI с использованием cookies.
bing_ai = await Chatbot.create(cookie_path='./data/cookies.json')
response_dict = await bing_ai.ask(prompt)
return response_dict['item']['messages'][1]['text'].replace("[^\\d^]", "")
bot = Bot(telegram_token)
dp = Dispatcher(bot)
@dp.message_handler(lambda message: message.from_user.id != bot.id)
async def send(message: types.Message):
try:
prompt = message.text
if not prompt:
await message.answer('Вы задали пустой запрос.')
else:
await message.answer('Ожидание ответа на ваш запрос...')
await message.answer_chat_action('typing')
bot_response = await bing_chat(prompt=prompt)
await message.answer(bot_response, parse_mode='markdown')
except Exception as ex:
await message.answer(f'BingAI не хочет общаться с Вами, ошибка: {ex}. Попробуйте снова.')
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Этот код использует библиотеку aiogram для создания Telegram бота на Python, который может взаимодействовать с сервисом искусственного интеллекта Bing AI.
Импортируются модули Bot
, types
, Dispatcher
и executor
из библиотеки aiogram
, а также модуль Chatbot
из библиотеки EdgeGPT
.
Переменная telegram_token
хранит токен, который получает пользователь, создавший бота в Telegram.
Функция bing_chat
используется для получения ответа от сервиса Bing AI. Она получает на вход prompt
, то есть запрос пользователя, и возвращает ответ, полученный от Bing AI, удаляя из него специальные символы [^\\d^]
.
Далее создаются объекты Bot
и Dispatcher
, используя токен, который был сохранен в telegram_token
.
Обработчик сообщений устанавливается на все сообщения, кроме тех, которые отправлены самим ботом. Если пользователь отправил пустой запрос, то бот ответит "Вы задали пустой запрос.". В противном случае, бот отправит "Ожидание ответа на ваш запрос...", затем вызовет функцию bing_chat
для получения ответа от Bing AI и отправит полученный ответ пользователю, также пользователь увидит активность от бота ввиде написания текста.
Если возникнет какая-либо ошибка, бот ответит "BingAI не хочет общаться с Вами."
В конце запускается executor
с параметрами dp
и skip_updates=True
. executor
запускает цикл для обработки новых сообщений, пока бот не будет остановлен.
Проверка работы бота
Запускаем бота с помощью команды py main.py
, и пробуем с ним общаться.



Проблема Bing AI иногда заключается в том, что он не всегда может с нами общаться, выдавая различные ошибки и выходя с нами из диалога. Для этого нам необходимо отправлять сообщение заново. Возможно это можно как-то пофиксить, и если я найду решение этой проблемы, то допишу в этой статье.