acheck / tb1

Телеграм бот для доступа к chatGPT, Google Bard, Claude AI и др

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Телеграм бот для доступа к Google Gemini, MS Bing etc

Тестовый образец https://t.me/kun4sun_bot

Чат бот отзывается на кодовое слово бот(можно сменить командой /name) бот расскажи про биткоин

Кодовое слово гугл(нельзя изменить) позволит получить более актуальную информацию, бот будет гуглить перед ответом гугл, сколько людей на земле осталось

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

Если он перестал отвечать то возможно надо почистить ему память командой забудь бот забудь

Кодовое слово нарисуй и дальше описание даст картинки сгенерированные по описанию. В чате надо добавлять к этому обращение бот нарисуй на заборе неприличное слово

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

Если отправить текстовый файл или пдф то выдаст краткое содержание.

Если отправить картинку с подписью ocr то вытащит текст из них.

Если отправить ссылку в приват то попытается прочитать текст из неё и выдать краткое содержание.

Если отправить картинку с другой подписью или без подписи то напишет описание того что изображено на картинке или ответит на вопрос из подписи, в чате надо начинать с знака ?

Если отправить номер телефона то попробует узнать кто звонил (только русские номера)

Команды и запросы можно делать голосовыми сообщениями, если отправить голосовое сообщение которое начинается на кодовое слово то бот отработает его как текстовую команду.

Доступные команды

Уникальные фичи бота

  • Может работать на бесплатных ключах от пользователей, gemini, groq, huggingface, deepl, и на платных openrouter - любая модель, ключи от бинга мог бы брать но с ними мороки много и вроде не надо, своих хватает.

  • В этого бота можно кидать тексты больше 4к символов. Телеграмм их режет на части а бот склеивает обратно и отвечает на них как на цельные сообщения большого размера.

  • Может выдавать ответы любого размера, режет их на части так что бы не сломалось маркдаун форматирование. Или отправляет как файл если в ответе очень много символов (больше 40т).

  • Может понимать (переводить голос в текст) аудио сообщения любого размера.

  • Может сделать сам субтитры для ютуб видео у которого их нет, любого размера. И потом отвечать на вопросы по этим субтитрами, пересказывать.

  • Чат-бот автоматически переключается на резервную модель если основная не ответила, и ответ от резервной помещается в память основной как будто это она ответила, это делает бота более живучим и помогает преодолеть проблемы связанные с цензурой.

  • При пересказе текста по ссылке читает не только текст по ссылке но и все ссылки какие есть в этом тексте. Это помогает более качественно отвечать на вопросы по тексту.

  • Локализация делается автоматически на все языки

Команды

Команды для юзера

/gemini10 - поменять модель джемини на 1.0

/gemini15 - поменять модель джемини на 1.5

/llama370 - поменять модель groq llama 3 70b

/openrouter - выбрать openrouter.ai поставщик разнообразных платных ИИ

Команды для администратора

/addkey - добавить ключ для джемини другому юзеру /addkey

/alert - массовая рассылка сообщения от администратора во все чаты, маркдаун форматирование, отправляет сообщение без уведомления но всё равно не приятная штука похожая на спам

/msg - userid_as_int text to send from admin to user'

/init - инициализация бота, установка описаний на всех языках, не обязательно, можно и вручную сделать, выполняется долго, ничего не блокирует

/enable - включить бота в публичном чате (комнате) /disable - выключить бота в публичном чате (комнате)

/blockadd - добавить id '[chat_id] [thread_id]' в список заблокированных (игнорируемых) юзеров или чатов, учитывается только первая цифра, то есть весь канал со всеми темами внутри

/blockdel - удалить id из игнорируемых

/blocklist - список игнорируемых

/leave <chat_id> - выйти из чата (можно вместо одного id вывалить кучу, все номера похожие на номер группы в тексте будут использованы)

/revoke <chat_id> - убрать чат из списка на автовыхода(бана) (можно вместо одного id вывалить кучу, все номера похожие на номер группы в тексте будут использованы)

/restart - перезапуск бота на случай зависания

/stats - статистика бота (сколько было активно за последнее время)

/style2 - изменить стиль бота для заданного чата (пример: /style2 [id] [topic id] новая роль)

/reset_gemini2 - очистить историю чата Gemini Pro в другом чате Usage: /reset_gemini2 <chat_id_full!>

========================================

/tgui - исправление переводов, ищет среди переводов совпадение и пытается исправить перевод

тут перевод указан вручную

/tgui клавиши Близнецы добавлены|||ключи для Gemini добавлены

а тут будет автоперевод с помощью ии

/tgui клавиши Близнецы добавлены

========================================

/bingcookie - (/cookie /k) добавить куки для бинга, можно несколько через пробел

/bingcookieclear (/kc) - удалить все куки для бинга

/disable_chat_mode from to - принудительно сменить всем режим чата, например у кого бард переключить на джемини

Скриншоты

Установка

Для установки проекта выполните следующие шаги:

  1. Установите Python 3.8+.

  2. Установите утилиту trans sudo apt-get install translate-shell

  3. Установите утилиту tesseract. В убунте 22.04.х (и дебиане 11) в репах очень старая версия тессеракта, надо подключать репозиторий с новыми версиями или ставить из бекпортов

    sudo apt-get update && \
    sudo apt-get install -y software-properties-common && \
    sudo add-apt-repository -y ppa:alex-p/tesseract-ocr5 && \
    sudo apt-get update && \
    sudo apt install tesseract-ocr tesseract-ocr-eng \
    tesseract-ocr-rus tesseract-ocr-ukr tesseract-ocr-osd
    
  4. Установите словари и прочее sudo apt install aspell aspell-en aspell-ru aspell-uk catdoc enchant-2 ffmpeg pandoc python3-venv sox yt-dlp надо установить отдельно, т.к. в репах нет актуальной свежей версии, а она нужна для скачивания тиктоков и музыки с ютуба

  5. Клонируйте репозиторий с помощью команды:

    git clone https://github.com/theurs/tb1.git
    
    python -m venv .tb1
    source ~/.tb1/bin/activate
    
    
  6. Перейдите в директорию проекта:

    cd tb1
    
  7. Создайте файл cfg.py и добавьте в него строку

# не журналировать id чатов из этого списка
DO_NOT_LOG = [xxx, yyy,]

# описание бота, которое отображается в чате с ботом, если чат пуст. До 512 символов.
bot_description = """Free chat bot

Голосовое управление, озвучивание текстов, пересказ веб страниц и видеороликов на Youtube, распознавание текста с картинок и из PDF."""

# краткое описание бота, которое отображается на странице профиля бота и отправляется
# вместе со ссылкой, когда пользователи делятся ботом. До 120 символов.
bot_short_description = """Free chat bot"""

# Имя бота (псевдоним), это не уникальное имя, можно назвать как угодно,
# это не имя бота на которое он отзывается. До 64 символов.
bot_name = "Бот"

# имя на которое отзывается бот по умолчанию
default_bot_name = 'бот'

# какой бот отвечает по умолчанию
# 'gemini', 'gemini15', 'llama370', 'openrouter'
chat_mode_default = 'gemini15'

# default locale, язык на который переводятся все сообщения
DEFAULT_LANGUAGE = 'ru'

# список админов, кому можно использовать команды /restart и вкл-выкл автоответы в чатах
admins = [xxx,]

# группа для логов, вместо(вместе с :) сохранения в текстовые файлы
# сообщения будут копироваться в эту группу, группа должна быть закрытой,
# у бота должны быть права на управление темами (тредами)
# LOGS_GROUP = -1234567890

# -1 - do not log to files
# 0 - log users to log2/ only
# 1 - log users to log/ and log2/
# LOG_MODE = 1

# id группы на которую юзеры должны подписаться что бы юзать бота
# бот должен быть в группе и возможно иметь какие то права что бы проверять есть ли в ней юзер
# subscribe_channel_id = -xxx
# subscribe_channel_mes = 'Подпишитесь на наш канал http://t.me/blabla'
# subscribe_channel_cache = 3600*24 # сутки

# сколько раз раз в минуту можно обращаться к боту до бана
DDOS_MAX_PER_MINUTE = 10
# на сколько секунд банить
DDOS_BAN_TIME = 60*10

# telegram bot token
token   = "xxx"


# id телеграм группы куда скидываются все сгенерированные картинки
# группы надо создать, добавить туда бота и дать права на публикацию
pics_group = 0
pics_group_url = ''
# pics_group = xxx
# pics_group_url = 'https://t.me/xxx'

# размер буфера для поиска в гугле, чем больше тем лучше ищет и отвечает
# и тем больше токенов жрет
# для модели с 4к памяти
#max_request = 2800
#max_google_answer = 1000
# для модели с 16к памяти
max_request = 14000
max_google_answer = 2000


# насколько большие сообщения от юзера принимать
max_message_from_user = 40000


# язык для распознавания, в том виде в котором принимает tesseract
# 'eng', 'ukr', 'rus+eng+ukr'
# можно указывать несколько через + но чем больше чем хуже, может путать буквы из разных языков даже в одном слове
# пакет для tesseract с этими языками должен быть установлен 
# https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html
ocr_language = 'rus'


# показывать ли рекламу группы Neural Networks Forum при рисовании,
# что бы люди туда уходили рисовать и отстали от моего бота
enable_image_adv = False

# https://ai.google.dev/
# ключи для Gemini
gemini_keys = ['xxx', 'yyy']

# размер истории gemini. чем больше тем больше токенов и дольше
# GEMINI_MAX_CHAT_LINES = 40

# прокси для gemini, если не указать то сначала попытается работать
# напрямую а если не получится то будет постоянно искать открытые прокси
# gemini_proxies = ['http://172.28.1.5:3128', 'socks5h://172.28.1.5:1080']

# прокси для рисования бингом (не работает пока, игнорируется)
# bing_proxy = ['socks5://172.28.1.4:1080', 'socks5://172.28.1.7:1080']
# bing_proxy = []

# отлавливать ли номера телефонов для проверки по базе мошенников
# если боту написать номер то он попробует проверить его на сайтах для проверки телефонов
PHONE_CATCHER = True


# huggin_face_models_urls = [
#     #"https://api-inference.huggingface.co/models/thibaud/sdxl_dpo_turbo",
#     #"https://api-inference.huggingface.co/models/thibaud/sdxl_dpo_turbo",

#     "https://api-inference.huggingface.co/models/stablediffusionapi/juggernaut-xl-v8",
#     "https://api-inference.huggingface.co/models/stablediffusionapi/juggernaut-xl-v8",

#     "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl",
#     "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl",
#     "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0",
#     #"https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-2-1",
#     "https://api-inference.huggingface.co/models/cagliostrolab/animagine-xl-3.0",
#     ]


# whisper api servers for speech to text
# [(address, port), (adress2, port2),]
# MY_WHISPER_API = [
#    ('10.147.17.227','34671'),
#    ('10.147.17.26', '34671'),
#    ]

# рисование кандинским, бесплатное
# https://fusionbrain.ai/docs/ru/doc/api-dokumentaciya/
KANDINSKI_API = [
    ('api key', 'secret key'),
]

# https://yandex.cloud/ru/docs/iam/operations/iam-token/create#api_1
YND_OAUTH = ['xxx', 'yyy']

# гпт4 и далли3. просто ссылка в меню на отдельного бота с гпт4-турбо и далли3
coze_bot = 'https://t.me/kun6sun_bot'


# https://console.groq.com/keys
GROQ_API_KEY = [
    'gsk_xxx',
    'gsk_yyy',
    ]
# GROQ_PROXIES = ['socks5://172.28.1.8:1080',]


# ключ от опенроутера openrouter.ai
OPEN_ROUTER_KEY = 'xxx'


# translate api https://www.deepl.com
# DEEPL_KEYS = ['xxx', 'yyy']


# DEBUG = False

Что бы работало рисование бингом надо заменить куки, взять с сайта bing.com раздел чат, попасть туда можно только с ип приличных стран и с аккаунтом в микрософте. С помощью браузерного расширения cookie editor надо достать куки с именем _U и передать боту через команду /bingcookie xxx Что бы работал Copilot (bing.com -> chat) надо сохранить оттуда куки, export в json сохранить под именем cookie*.json и регулярно проходить капчу.

  1. Запустить ./tb.py

Использование

Перед тем как приглашать бота на канал надо в настройке бота у @Botfather выбрать бота, затем зайти в Bot Settings-Group Privacy- и выключить. После того как бот зашел на канал надо включить опять. Это нужно для того что бы у бота был доступ к сообщениям на канале.

Лицензия

Лицензия, под которой распространяется проект.

About

Телеграм бот для доступа к chatGPT, Google Bard, Claude AI и др


Languages

Language:Python 100.0%