Бот на Python, работающий с помощью нейросети Google Bard для Telegram [Гайд] [UPD 25.07.2023]
В данной статье мы изучим процесс разработки Telegram-бота с использованием языка программирования Python и библиотеки aiogram. Особенностью этого бота будет встроенная нейросеть Google Bard, которую мы будем использовать для обработки сообщений и генерации ответов.
Если вы хотите выразить благодарность автору сайта, статей и курса по Django, вы можете сделать это по ссылке ниже:
Как получить токен Google Meet Bard
- Первое, что нам необходимо сделать, это перейти в самого чат-бота Google Bard.
- Далее открываем консоль разработчика (F12).
- В консоле разработчика переходим в Приложения (Applications)
- Переходим в файлы cookie, выбираем https://bard.google.com/.
- Ищем в файлах cookie название
__Secure-1PSID
и__Secure-1PSIDTS
и копируем их значение, сохраняем куда-нибудь.
Отлично. Необходимые токены для Google Bard мы получили.
Как получить токен телеграм бота
Теперь нам необходимо создать бота в телеграмме, делается это через @BotFather, начинаем диалог и вводим команду /newbot
, выбираем имя, обязательно чтоб в имени присутствовало слово: Bot
, или через подчеркивание _bot
Получаем ключ для доступа к API, на скриншоте он закрашен. Сохраняем в удобное место.
Создание виртуального окружения (если знаете как, можете пропускать)
Теперь нам необходимо создать телеграм бота работающего на основе Google Meet Bard. Создавать бота мы будем с помощью библиотеки aiogram на Python. Поэтому через удобную для вас IDE создаете виртуальное окружение.
В примере воспользуемся IDE PyCharm.
- Нажимаем New Project, если вы уже находитесь в проекте, то File -> New Project.
- Далее выбираем Pure Python (Python проект) и путь до желаемого проекта. У меня например Ботостроение/GoogleBard. Виртуальное окружение создатся в папке venv, внутри проекта автоматически.
- Далее нажимаем Create и ждем создания проекта.
- Если у вас не создался файл main.py, просто создайте его: На папке проекта ЛКМ мышью -> New -> Python File с названием main.py
- В файле main.py мы и будем создавать нашего бота.
Создаем telegram бота с Google Meet Bard
Теперь установим необходимые библиотеки через терминал в pyCharm для создания бота: pip install aiogram
и pip install GoogleBard==2.1.0
Результат выполнения установки:
Collecting GoogleBard
Downloading GoogleBard-2.1.0-py3-none-any.whl (5.1 kB)
Collecting aiogram
Using cached aiogram-2.25.1-py3-none-any.whl (203 kB)
Collecting requests
Using cached requests-2.30.0-py3-none-any.whl (62 kB)
Collecting prompt-toolkit
Using cached prompt_toolkit-3.0.38-py3-none-any.whl (385 kB)
Collecting rich
Using cached rich-13.3.5-py3-none-any.whl (238 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 certifi>=2021.10.8
Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
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-23.1.0-py3-none-any.whl (61 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.9.2-cp311-cp311-win_amd64.whl (60 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 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<3,>=1.21.1
Using cached urllib3-2.0.2-py3-none-any.whl (123 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.15.1-py3-none-any.whl (1.1 MB)
Collecting mdurl~=0.1
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: wcwidth, pytz, urllib3, pygments, prompt-toolkit, multidict, mdurl, magic-filter, idna, frozenlist, charset-normalizer, certifi, Babel, attrs, async-timeout, yarl, requests, markdown-it-py, aiosignal, rich, aiohttp, GoogleBard, aiogram
Successfully installed Babel-2.9.1 GoogleBard-1.0.0 aiogram-2.25.1 aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.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.15.1 pytz-2023.3 requests-2.30.0 rich-13.3.5 urllib3-2.0.2 wcwidth-0.2.6 yarl-1.9.2
[notice] A new release of pip available: 22.3.1 -> 23.1.2
[notice] To update, run: python.exe -m pip install --upgrade pip
Теперь в файле main.py напишем следующий фрагмент кода:
from Bard import AsyncChatbot
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
secure_1PSID = 'Ваш __SECURE_1PSID'
secure_1PSIDTS = 'Ваш __SECURE_1PSIDTS'
telegram_token = 'Ваш TELEGRAM_TOKEN'
bot = Bot(token=telegram_token)
dp = Dispatcher(bot)
@dp.message_handler()
async def send(message: types.Message):
try:
chatbot = await AsyncChatbot.create(secure_1PSID, secure_1PSIDTS)
await message.answer('Google Bard начинает думать...')
await message.answer_chat_action('typing')
answer = await chatbot.ask(message.text)
await message.answer(answer.get('content'), parse_mode="markdown")
except Exception as ex:
await message.answer(str(ex))
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Этот код отвечает за создание Telegram-бота, который использует нейросеть Google Bard для генерации ответов на сообщения.
Первая строка from Bard import Chatbot
импортирует класс Chatbot из модуля Bard, который содержит реализацию нейросети Google Bard.
Затем импортируются необходимые модули из библиотеки aiogram:
Bot
- класс, представляющий бота Telegram.types
- модуль, содержащий различные типы данных для работы с API Telegram.Dispatcher
- класс, отвечающий за обработку и маршрутизацию входящих сообщений.executor
- модуль, содержащий функции для запуска бота. Далее задаются переменныеtelegram_token
иsecure_1PSID
,secure_1PSIDTS
, в которых указываются токены для доступа к Telegram API и Google Bard API соответственно.
Затем создаются объекты Bot
, Dispatcher
и Chatbot
. Объект Bot
инициализируется с помощью токена Telegram
, который позволяет боту взаимодействовать с пользователем. Объект Dispatcher
создается на основе объекта Bot
и используется для управления обработкой входящих сообщений.
Примечание: без использования прокси или VPN при запуске бота на клиенте (компьютере/сервере) вы можете столкнуться с следующей ошибкой:
Google Bard encountered an error: b')]}\'\n\n38\n["wrb.fr",null,null,null,null,[9]]\n56\n["di",196,"af.httprm",196,"5929433453807571131",4]\n25\n["e",4,null,null,131]\n'.
Поэтому используйте прокси http/https
страны США, например из этого списка. Либо используйте клиентский VPN с подключением к любой несанкционной стране. Ну а если у вас есть сервер VPS в из другой страны, то можете просто развернуть бота на нём.
- Обработчик
@dp.message_handler()
указывает, что функцияsend
будет вызываться при каждом входящем сообщении. Внутри этой функции происходит следующее: chatbot
- инициализация асинхронного бота GoogleBardAsyncChatbot
. P.S. Хотелось бы вызывать его один раз и не в функции, но я пробовал делать pool GoogleBard ботов, все они сыпались ошибками. Получился рабочий вариант только такой.- Бот отправляет сообщение пользователю о начале обработки запроса.
- Бот отправляет пользователю специальное действие
typing
для эмуляции набора текста. - Запрашивается ответ от нейросети Google Bard на основе текста сообщения пользователя с помощью метода
ask()
. - Полученный ответ отправляется пользователю в качестве ответного сообщения.
- В блоке
except
обрабатываются возможные исключения и отправляется пользователю сообщение с текстом ошибки.
Наконец, if __name__ == '__main__'
: проверяет, запущен ли этот скрипт непосредственно (а не импортирован как модуль), и если это так, запускается бот с помощью функции start_polling из модуля executor
. Флаг skip_updates=True
указывает, что нужно пропускать обновления, которые пришли до запуска бота.
Проверяем Telegram-бота с Google Bard в деле
Не забываем, что Google Bard на данный момент времени, а это май 2023 года, общается только на английском языке! Все, что подается в Telegram под видом Google Bard, который пишет на русском: фейк. Репозиторий с кодом на GitHub.