• Как сделать, чтобы по запросу бот отправлял картинку с рандомными числами?

    @Sanic1 Автор вопроса
    Александр Коратаев, напишите пожалуйста @rolex_manager в тг.У меня ограничение на отправку сообщений.Не могу написать вам первым.
    Написано
  • Как сделать, чтобы по запросу бот отправлял картинку с рандомными числами?

    @Sanic1 Автор вопроса
    Александр Коратаев, можете скинуть ваши контакты,я бы у вас купил бы код.
    Написано
  • Как сделать, чтобы по запросу бот отправлял картинку с рандомными числами?

    @Sanic1 Автор вопроса
    Александр Коратаев, выдает эту ошибку

    C:\Users\HP\OneDrive\Рабочий стол\bott>python bot.py
    Traceback (most recent call last):
    File "C:\Users\HP\OneDrive\Рабочий стол\bott\bot.py", line 127, in
    bot.polling()
    File "C:\Python39\lib\site-packages\telebot\__init__.py", line 1169, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
    File "C:\Python39\lib\site-packages\telebot\__init__.py", line 1244, in __threaded_polling
    raise e
    File "C:\Python39\lib\site-packages\telebot\__init__.py", line 1206, in __threaded_polling
    self.worker_pool.raise_exceptions()
    File "C:\Python39\lib\site-packages\telebot\util.py", line 150, in raise_exceptions
    raise self.exception_info
    File "C:\Python39\lib\site-packages\telebot\util.py", line 93, in run
    task(*args, **kwargs)
    File "C:\Python39\lib\site-packages\telebot\__init__.py", line 8404, in _run_middlewares_and_handler
    result = handler['function'](message)
    File "C:\Users\HP\OneDrive\Рабочий стол\bott\bot.py", line 94, in send_odd
    bot.send_photo(message.chat.id, create_odd_image(odd), caption=f'Ваш коэффициент: {odd}', reply_markup=next_odd_button())
    File "C:\Users\HP\OneDrive\Рабочий стол\bott\bot.py", line 66, in create_odd_image
    image.save(last_generated_image, format='PNG')
    NameError: name 'image' is not defined

    C:\Users\HP\OneDrive\Рабочий стол\bott>

    мой код
    import random
    import sqlite3
    import telebot
    from telebot import types
    from PIL import Image, ImageDraw, ImageFont
    from io import BytesIO

    # Подключение к Telegram API
    bot = telebot.TeleBot('токен')

    # Глобальная переменная для последнего сгенерированного изображения
    last_generated_image = None

    # Функция для генерации рандомного коэффициента
    def generate_random_odd():
    rand = random.random()
    if rand < 0.5:
    return round(random.uniform(1.0, 2.0), 2)
    elif rand < 0.8:
    return round(random.uniform(2.0, 3.0), 2)
    elif rand < 0.9:
    return round(random.uniform(3.0, 8.0), 2)
    elif rand < 0.97:
    return round(random.uniform(8.0, 15.0), 2)
    elif rand < 0.99:
    return round(random.uniform(15.0, 50.0), 2)
    else:
    return round(random.uniform(50.0, 5000.0), 2)

    # Функция для создания изображения с коэффициентом
    def create_odd_image(odd):
    # Создание нового пустого изображения (белый фон)
    image = Image.new('RGB', (420, 100), color='white')

    # Создание объекта ImageDraw для рисования на изображении
    draw = ImageDraw.Draw(image)

    # Определение шрифта и его размера
    font = ImageFont.truetype("arial.ttf", 32)

    # Определение цвета текста (черный)
    text_color = (0, 0, 0)

    # Рисование текста на изображении
    draw.text((10, 10), f'Ваш коэффициент: {odd}', fill=text_color, font=font)

    # Сохранение измененного изображения
    image.save('odd_image.png')

    # Считывание сохраненного изображения
    with open('odd_image.png', 'rb') as img:
    img_data = img.read()

    # Возвращаем изображение в формате BytesIO
    return BytesIO(img_data)

    # Ваша логика для генерации коэффициента

    # Функция для создания изображения с коэффициентом
    def create_odd_image(odd):
    # Ваш код для создания изображения
    # Определите изображение как глобальную переменную
    global last_generated_image
    last_generated_image = BytesIO()
    # Сохраните изображение в переменную last_generated_image
    image.save(last_generated_image, format='PNG')
    # Возвращаем открытое изображение
    return last_generated_image

    # Приветственное сообщение при запуске бота
    @bot.message_handler(commands=['start'])
    def start(message):
    bot.reply_to(message, 'Привет! Вы можете получить доступ к прогнозам. Нажмите кнопку "Получить коэффициент", чтобы начать.', reply_markup=get_odd_button())

    # Клавиатура с кнопкой "Получить коэффициент"
    def get_odd_button():
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add('Получить коэффициент')
    return keyboard

    # Обработка нажатия кнопки "Получить коэффициент"
    @bot.message_handler(func=lambda message: message.text == 'Получить коэффициент')
    def send_odd(message):
    # Генерация рандомного коэффициента
    odd = generate_random_odd()

    # Сохранение коэффициента в базе данных SQLite
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('INSERT INTO odds (odd) VALUES (?)', (odd,))
    conn.commit()

    # Отправка изображения с коэффициентом
    bot.send_photo(message.chat.id, create_odd_image(odd), caption=f'Ваш коэффициент: {odd}', reply_markup=next_odd_button())

    # Функция для создания клавиатуры с кнопкой "Следующий коэффициент"
    def next_odd_button():
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add('Следующий коэффициент')
    return keyboard

    # Обработка нажатия кнопки "Следующий коэффициент"
    @bot.message_handler(func=lambda message: message.text == 'Следующий коэффициент')
    def send_next_odd(message):
    # Получение последнего коэффициента из базы данных SQLite
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('SELECT odd FROM odds ORDER BY id DESC LIMIT 1')
    odd = cursor.fetchone()[0]

    # Генерация следующего рандомного коэффициента
    next_odd = generate_random_odd()

    # Отправка изображения с следующим коэффициентом
    bot.send_photo(message.chat.id, last_generated_image, caption=f'Ваш следующий коэффициент: {next_odd}', reply_markup=next_odd_button())

    # Подключение к базе данных SQLite и создание таблицы коэффициентов (если она не существует)
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS odds (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    odd REAL NOT NULL
    )''')
    conn.commit()

    # Запуск бота
    bot.polling()

    можете просто код отправить полный?без ошибочный что бы я просто его вставил и все,выберите любое имя картинки что бы бот отправлял ее а не создавал ,я сам заменю имя картинки и коэфициент что бы выдавал допустим фотка внизу ,надо что бы коэфициент был внизу надписи лаки джет фиолетового цвета шрифт не важно какой и что бы бот работал очень буду благодарен если сделаете))

    663c91e6bfa6a498487329.jpeg
    Написано
  • Как сделать, чтобы по запросу бот отправлял картинку с рандомными числами?

    @Sanic1 Автор вопроса
    Дело в том что шрифт абсолютно не показывается на фотке,просто бот отправляет белый фон без коэфициента ,мне нужно что бы бот брал изображение фона (background_image.png) естественно в папке с кодом шрифт тоже там же (arial.ttf),а не создавал фон , код снизу

    Мне нужно создать бота на подобии этого (снизу ссылку оставил) ,если сможете то напишите пожалуйста код что бы бот был +- таким как фотке
    663a25bb93111100485911.jpeg

    либо интегрируйте выше мной написанное в этот код

    import random
    import sqlite3
    import telebot
    from telebot import types

    # Подключение к Telegram API
    bot = telebot.TeleBot('Ваш_токен_сюда')

    # Функция для генерации рандомного коэффициента
    def generate_random_odd():
    # Логика для генерации коэффициента, как в вашем предыдущем коде
    rand = random.random()
    if rand < 0.5:
    return round(random.uniform(1.0, 2.0), 2)
    elif rand < 0.8:
    return round(random.uniform(2.0, 3.0), 2)
    elif rand < 0.9:
    return round(random.uniform(3.0, 8.0), 2)
    elif rand < 0.97:
    return round(random.uniform(8.0, 15.0), 2)
    elif rand < 0.99:
    return round(random.uniform(15.0, 50.0), 2)
    else:
    return round(random.uniform(50.0, 5000.0), 2)

    # Функция для создания изображения с коэффициентом
    def create_odd_image(odd):
    # Загрузка изображения background_image.jpg
    image = open('background_image.jpg', 'rb')
    return image

    # Приветственное сообщение при запуске бота
    @bot.message_handler(commands=['start'])
    def start(message):
    bot.reply_to(message, 'Привет! Вы можете получить доступ к прогнозам. Нажмите кнопку "Получить коэффициент", чтобы начать.', reply_markup=get_odd_button())

    # Клавиатура с кнопкой "Получить коэффициент"
    def get_odd_button():
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add('Получить коэффициент')
    return keyboard

    # Обработка нажатия кнопки "Получить коэффициент"
    @bot.message_handler(func=lambda message: message.text == 'Получить коэффициент')
    def send_odd(message):
    # Генерация рандомного коэффициента
    odd = generate_random_odd()

    # Сохранение коэффициента в базе данных SQLite
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('INSERT INTO odds (odd) VALUES (?)', (odd,))
    conn.commit()

    # Отправка изображения с коэффициентом
    bot.send_photo(message.chat.id, create_odd_image(odd), caption=f'Ваш коэффициент: {odd}', reply_markup=next_odd_button())

    # Функция для создания клавиатуры с кнопкой "Следующий коэффициент"
    def next_odd_button():
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add('Следующий коэффициент')
    return keyboard

    # Обработка нажатия кнопки "Следующий коэффициент"
    @bot.message_handler(func=lambda message: message.text == 'Следующий коэффициент')
    def send_next_odd(message):
    # Получение последнего коэффициента из базы данных SQLite
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('SELECT odd FROM odds ORDER BY id DESC LIMIT 1')
    odd = cursor.fetchone()[0]

    # Генерация следующего рандомного коэффициента
    next_odd = generate_random_odd()

    # Отправка изображения с следующим коэффициентом
    bot.send_photo(message.chat.id, create_odd_image(next_odd), caption=f'Ваш следующий коэффициент: {next_odd}', reply_markup=next_odd_button())

    # Подключение к базе данных SQLite и создание таблицы коэффициентов (если она не существует)
    with sqlite3.connect('odds.db') as conn:
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS odds (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    odd REAL NOT NULL
    )''')
    conn.commit()

    # Запуск бота
    Написано