• Новый бот-ассистент на форуме Codeby

    Теперь на форуме работает ИИ-помощник @bot_cdb — твой технический ассистент по информационной безопасности. Просто упомяни @bot_cdb в любой теме, и получишь быстрый ответ на вопросы по CVE, инструментам, техникам атак и защиты. Бот анализирует весь тред перед ответом, проверяет актуальность данных и может предложить дополнительную помощь. Особенно полезен для проверки технических деталей, поиска документации и быстрых консультаций по пентесту, малвари, форензике и другим областям ИБ.

Soft GPT 4 FREE SCRIPT TG BOT

JackSparrow

Red Team
04.04.2020
260
173
SCRIPT.PY

Код мой частично, кода немного, улучшения приветствуются 😈
Можно запустить "как есть" подложив свой токен. Вы получите бесплатный GPT 4 через g4f с памятью 4096 (макс. длина запроса) символов в вашем телеграмм боте .

g4f поддерживает множество разных моделей, которые реализуются через запросы к разным провайдерам (в том числе платформа
) - git .

Python:
import logging

import g4f
import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

API_TOKEN_BOT = 'BOTFATHER_TOKEN'

bot = Bot(token=API_TOKEN_BOT)
storage = MemoryStorage()
dp = Dispatcher(storage=storage)

gpt_response_task = None

history_for_shodan = {}

def check_history(history, max_length=4096):
    current_length = sum(len(message["content"]) for message in history)
    while history and current_length > max_length:
        removed_message = history.pop(0)
        current_length -= len(removed_message["content"])
    print(history)
    return history

@dp.message(Command("start"))
async def send_welcome(message: types.Message):
    await message.answer("Позоваи меня тихо по имени ...")

# чистка истории
@dp.message(Command("clear"))
async def process_clear_command(message: types.Message):
    user_id = message.from_user.id
    history_for_shodan[user_id] = []
    await message.answer("История диалога очищена...")

# обработчик сообщений юзера. создает асинк задачу на отправку запроса к gpt. парсит ответ для обработки кода.
@dp.message()
async def echo(message: types.Message):
    global gpt_response_task

    if gpt_response_task and not gpt_response_task.done():  # Проверяем, выполняется ли задача
        await message.answer("Предыдущий запрос еще обрабатывается...")
        return

    user_message = message.text
    user_id = message.from_user.id

    msg_request = await message.answer("Запрос отправлен в обработку...")
    msg_request_id = msg_request.chat.id
    msg_request_message_id = msg_request.message_id

    try:
        gpt_response_task = asyncio.create_task(gpt_response(user_message, message, msg_request_id, msg_request_message_id))
        bot_response = await gpt_response_task

        await message.answer(bot_response, parse_mode='Markdown')

    except Exception as e:
        #await message.answer(bot_response)
        await message.answer(f"Ошибка в методе echo : {e}")

async def gpt_response(user_message: str, message: types.Message, msg_request_id, msg_request_message_id):
    user_id = message.from_user.id

    if user_id not in history_for_shodan:
        history_for_shodan[user_id] = []

    history_for_shodan[user_id].append({"role": "user", "content": user_message})
    history_for_shodan[user_id] = check_history(history_for_shodan[user_id])

    chat_history = history_for_shodan[user_id]
    print(chat_history)

    chat_id = message.chat.id
    # запрос к модели провайдера
    response = g4f.ChatCompletion.create(
        model=g4f.models.gpt_4,
        #messages=[{"role": "user", "content": user_message}],
        messages=chat_history,
    )
    print(response)
    history_for_shodan[user_id].append({"role": "assistant", "content": response})
    await bot.delete_message(msg_request_id, msg_request_message_id)
 
    return response

async def main():
    try:
        await dp.start_polling(bot)
    except Exception as e:
        await message.answer(f"Ошибка в методе main : {e}")

if __name__ == "__main__":
    asyncio.run(main())
 
Последнее редактирование:
  • Нравится
Реакции: MoishaSnippersson
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab