Электро самолёт
Философия Стива Джобса
iPhone 16e
Nothing Phone 3a
Оживление фото LumaAI
Велосипед Mercedes
Робота научили делать сальто
Grok vs ChatGPT vs Claude
Генерация видео от Google

Бот для генерации изображений

Бот для генерации изображений

Сегодня создадим телеграм бота на базе API от OpenAI для генерации изображений по текстовому описанию, использовать будем их модели DALL·E 2 и DALL·E 3, приступим

Создаем бота

Для начала, перейдем в BotFather и создадим нового бота

Создание телеграм бота с помощью BotFather
Создание телеграм бота с помощью BotFather

после будет доступен токен бота, копируем и идем дальше.

API OpenAI

Переходим на платформу OpenAI в раздел API Keys и создаем новый ключ

Создание API ключа на платформе OpenAI
Создание API ключа на платформе OpenAI

В графе name указываете имя ключа, я написал "create img", далее получаетет ключ API Open AI.

Пишем код

Использовать будем python

import telebot from openai import OpenAI from config import * import requests import db import os # Создание экземпляра бота с использованием вашего токена bot = telebot.TeleBot(BOT_TOKEN) # Инициализация клиента OpenAI client = OpenAI(api_key=AI_TOKEN) # Создание таблиц в базе данных db.create_tables() # Создание папки, если ее нет if not os.path.exists(IMAGE_FOLDER): os.makedirs(IMAGE_FOLDER) # Обработчик команды /start @bot.message_handler(commands=['start']) def send_welcome(message): # Запись данных пользователя в базу данных db.add_user(message.chat.id) bot.reply_to(message, "Привет! Я могу создать обои по текстовому описанию для твоего телефона.") # Обработчик команды /stats @bot.message_handler(commands=['stats']) def show_stats(message): # Проверка, является ли пользователь администратором if message.from_user.id == ADMIN_ID: # Получение количества пользователей из базы данных total_users = db.get_total_users() bot.reply_to(message, f"Количество пользователей, воспользовавшихся ботом: {total_users}") else: bot.reply_to(message, "У вас нет прав на выполнение этой команды.") # Обработчик текстовых сообщений @bot.message_handler(func=lambda message: True) def generate_image(message): # Проверка длины сообщения if len(message.text) < 10: bot.send_message(message.chat.id, "Введите текст длиной не менее 10 символов.") return # Отправка оповещения о начале процесса генерации bot.send_message(message.chat.id, "Создаю обои, пожалуйста ожидайте...") # Генерация изображения с использованием OpenAI try: response = client.images.generate( model="dall-e-3", prompt=message.text, size="1024x1024", # 1024x1024, 1024x1792, 1792x1024 quality="standard", # standard, hd n=1, ) # -------------------------------------------------- # Model | Quality | Resolution | Price # -------------------------------------------------- # DALL·E 3 | Standard | 1024×1024 | $0.040 / image # -------------------------------------------------- # DALL·E 3 | Standard | 1024×1792 | $0.080 / image # -------------------------------------------------- # DALL·E 3 | Standard | 1792×1024 | $0.080 / image # -------------------------------------------------- # DALL·E 3 | HD | 1024×1024 | $0.080 / image # -------------------------------------------------- # DALL·E 3 | HD | 1024×1792 | $0.120 / image # -------------------------------------------------- # DALL·E 3 | HD | 1792×1024 | $0.120 / image # -------------------------------------------------- # DALL·E 2 | | 1024×1024 | $0.020 / image # -------------------------------------------------- # DALL·E 2 | | 512×512 | $0.018 / image # -------------------------------------------------- # DALL·E 2 | | 256×256 | $0.016 / image # -------------------------------------------------- # Получение URL сгенерированного изображения image_url = response.data[0].url # print(image_url) # Скачивание изображения и сохранение в папку images image_path = os.path.join(IMAGE_FOLDER, f"{message.chat.id}_{message.message_id}.png") with requests.get(image_url, stream=True) as r: if r.status_code == 200: with open(image_path, 'wb') as f: f.write(r.content) else: bot.send_message(message.chat.id, "Не удалось загрузить изображение.") # Запись данных об изображении в базу данных db.add_image(message.chat.id, message.text, image_path) # Отправка изображения пользователю with open(image_path, 'rb') as photo: bot.send_photo(message.chat.id, photo, reply_to_message_id=message.message_id) except Exception as e: # bot.send_message(message.chat.id, f"Произошла ошибка: {str(e)}") bot.send_message(message.chat.id, f"Произошла ошибка, прошу прощения за предоcтавленные неудобства, попробуйте еще раз или свяжитесь с разработчиком @king_triton") # Запуск бота bot.infinity_polling(interval=0)

1. Импорт библиотек: Код импортирует необходимые библиотеки, такие как telebot для работы с API Telegram, OpenAI для использования сервиса генерации изображений, requests для работы с HTTP-запросами, db для взаимодействия с базой данных, и os для работы с операционной системой.
2. Инициализация бота и клиента OpenAI: Создаются экземпляры бота и клиента OpenAI с использованием предоставленных токенов.
3. Создание таблиц в базе данных и папки: Проверяется наличие таблиц в базе данных и папки для сохранения изображений, и при необходимости они создаются.
4. Обработчик команды /start: При получении команды /start бот регистрирует пользователя в базе данных и приветствует его.
5. Обработчик команды /stats: При получении команды /stats бот отображает общее количество пользователей, которые воспользовались им, если отправитель сообщения является администратором.
6. Обработчик текстовых сообщений: Если бот получает текстовое сообщение, он проверяет его длину и, если она больше 10 символов, создает изображение на основе текста с использованием сервиса OpenAI. Затем бот отправляет сгенерированное изображение пользователю и сохраняет его в базе данных.
7. Запуск бота: Бот запускается в режиме бесконечного опроса, чтобы он мог реагировать на входящие сообщения пользователя.

Пару слов

Я создавал этого бота для генерации "обоев" на телефон, но эта тематика на сильно популярна, поэтому я выложил исходный код в открытый доступ, код можно модифицировать под свои нужны он очень прост, спасибо за внимание!

P.S. Посмотреть работу бота можно в tiktok.

реклама
разместить
Начать дискуссию
🤯 ИИ съест джунов и мидлов: кто будет кормить сеньоров завтра?
🤯 ИИ съест джунов и мидлов: кто будет кормить сеньоров завтра?

Все эти разговоры про замену джуниоров и мидлов на ИИ вызывают у меня все больше вопросов. Да, нейронки могут быстро генерировать код, автоматизировать рутину и повысить эффективность. Но давайте посмотрим правде в глаза: кто будет растить новое поколение сеньоров?

реклама
разместить
Разработка ботов для мессенджеров с OpenAI API и BotFather
import openai from telegram import Update from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext # Токены TELEGRAM_TOKEN = "ВАШ_ТЕЛЕГРАМ_ТОКЕН" OPENAI_API_KEY = "ВАШ_API_КЛЮЧ_ОТ_OPENAI" # Настраиваем OpenAI openai.api_key = OPENAI_API_KEY # Обработчик сообщений def handle_message(update: Update, context: CallbackContext): user_message = update.message.text chat_id = update.message.chat_id try: # Запрос к OpenAI response = openai.Completion.create( engine="text-davinci-003", # или 'gpt-4', если доступен prompt=user_message, max_tokens=100 ) # Ответ от ИИ bot_reply = response['choices'][0]['text'].strip() update.message.reply_text(bot_reply) except Exception as e: update.message.reply_text("Упс, что-то пошло не так!") # Запуск бота def main(): updater = Updater(token=TELEGRAM_TOKEN, use_context=True) dispatcher = updater.dispatcher # Обрабатываем входящие сообщения dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message)) # Запускаем бота updater.start_polling() updater.idle() if __name__ == "__main__": main()
11
11
Социальный бизнес: как запустить свой проект и улучшить мир вокруг
Социальный бизнес: как запустить свой проект и улучшить мир вокруг
22
Кейс: «Бот-маркетолог на Python — как я победил гигантские промты и тарифы на токены»

Люблю и умею решать маркетинговые задачи — от разработки простого приветственного бота до создания масштабных клубных систем с рекуррентной оплатой. Но в этот раз ко мне пришли с настоящим «монстром» маркетинга: чат-ботом на базе искусственного интеллекта, который должен был решать самые сложные задачи для предпринимателей. От генерации продающих т…

22
Обзор ChatGPT ботов для Телеграм - как выбрать лучший в 2025 году

Невероятный прогресс искусственного интеллекта вызвал переполох. Одна из суперзвезд — это ChatGPT. Чат-бот, который настолько передовой, что практически делает языковое сальто!

Обзор ChatGPT ботов для Телеграм - как выбрать лучший в 2025 году
66
22
Как делать ботов на telebot`е: своеобразный гайд от меня.

Здравствуй, мир! Я думаю каждый хотел сделать своего Telegram-бота. Ну хотя бы просто так. Так давайте я вам покажу, расскажу, и научу делать Telegram ботов

Курс биткоина не выполнил разворотных условий и спустился к целевому уровню $83990. При каких условиях растем и до куда? При каких продолжаем падение?

Во вчерашнем видео-разборе я подробно описывал условия для роста и продолжения падения. Были выполнены условия для продолжения падения, и цена достигла следующего по счету целевого уровня $83990. Сегодня произошел пересчет локальных данных. В каком случае начнем расти? В каком продолжим падать?

22
11
11
ЭТОТ Бот делает контент ЗА МЕНЯ? Нейросеть для создания контента

Как за 1 минуту сгенерировать видео из текста, оживить фото или придумать 100 идей для роликов? Всё это уже умеет бот из данного видео.

55
[]