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 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())
# Сохранение коэффициента в базе данных 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()
можете просто код отправить полный?без ошибочный что бы я просто его вставил и все,выберите любое имя картинки что бы бот отправлял ее а не создавал ,я сам заменю имя картинки и коэфициент что бы выдавал допустим фотка внизу ,надо что бы коэфициент был внизу надписи лаки джет фиолетового цвета шрифт не важно какой и что бы бот работал очень буду благодарен если сделаете))
Дело в том что шрифт абсолютно не показывается на фотке,просто бот отправляет белый фон без коэфициента ,мне нужно что бы бот брал изображение фона (background_image.png) естественно в папке с кодом шрифт тоже там же (arial.ttf),а не создавал фон , код снизу
Мне нужно создать бота на подобии этого (снизу ссылку оставил) ,если сможете то напишите пожалуйста код что бы бот был +- таким как фотке
либо интегрируйте выше мной написанное в этот код
import random
import sqlite3
import telebot
from telebot import types
# Подключение к Telegram API
bot = telebot.TeleBot('Ваш_токен_сюда')
# Функция для создания изображения с коэффициентом
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())
# Сохранение коэффициента в базе данных 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()
# Запуск бота
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.