Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не запускается бот в телеграм на питоне

Савелий Дудка Ученик (105), на голосовании 3 дня назад
При запуске бота не выдает никакой ошибки, при старте пишет начальный текст, а вот свое дело не выполняет. Бот должен получить img и перепаковать в btx, но этого не происходит, помогите пожалуйста, просто не очень разбираюсь в питоне

Ссылка на изначальный код в гитхабе: https://gist.github.com/xyzz/fbb344f4c2e9bba1ad12215a72db5035

Код:
https://drive.google.com/file/d/1Kdz7RulnOPip0PhahQTcyag3dpWSQ1fQ/view?usp=drivesdk
Голосование за лучший ответ
Ice Мастер (1865) 1 месяц назад
Поругай его
Савелий ДудкаУченик (105) 1 месяц назад
Ай ай ай, все, поругал, не помогло
Дмитрий Дмитриев Просветленный (40323) 1 месяц назад
Чтобы помочь вам с проблемой, начнем с проверки наиболее распространенных ошибок, которые могут быть причиной того, что бот не выполняет свою задачу, хотя и запускается без ошибок. Вот несколько шагов, которые могут помочь диагностировать и исправить проблему:

1. Проверка зависимостей
Убедитесь, что все зависимости, перечисленные в коде, установлены. Попробуйте установить их с помощью:

bash
Копировать код
pip install -r requirements.txt
Если файла requirements.txt нет, установите необходимые библиотеки по отдельности.

2. Проверка токена
Убедитесь, что у вас корректно установлен токен бота, выданный BotFather в Telegram. Токен должен быть подставлен в код в переменную, например:

python
Копировать код
TOKEN = "ВАШ_ТОКЕН_ЗДЕСЬ"
3. Логирование для диагностики
Если бот пишет начальный текст, но не выполняет основное задание, это может указывать на то, что функции, отвечающие за обработку изображений, не вызываются. Вставьте несколько строк логирования в ключевые места кода, чтобы узнать, вызываются ли необходимые функции. Например, добавьте print в начало каждой функции, чтобы убедиться, что она вызывается:

python
Копировать код
print("Функция handle_image вызвана")
Также, можно использовать стандартную библиотеку logging для более структурированного логирования:

python
Копировать код
import logging

logging.basicConfig(level=logging.INFO)
logging.info("Бот запущен и ждет изображение")
4. Отладка функции, отвечающей за обработку изображений
Если проблема заключается в том, что бот не выполняет преобразование изображения в btx, убедитесь, что функция для обработки изображения правильно вызывается и обрабатывает данные.

Пример кода для обработки изображений
Убедитесь, что у вас правильно прописан код для загрузки изображения, его преобразования и сохранения в нужном формате. Например:

python
Копировать код
@bot.message_handler(content_types=['photo'])
def handle_image(message):
logging.info("Получено изображение")

file_info = bot.get_file(message.photo[-1].file_id)
downloaded_file = bot.download _file(file_info.file_path)

with open("received_image.jpg", 'wb') as new_file:
new_file.write(downloaded_file)

# Добавьте ваш код для преобразования изображения в btx
# например, сохраняем как `converted_file.btx`
converted_file_path = convert_to_btx("received_image.jpg") # Функция должна возвращать путь к btx

with open(converted_file_path, 'rb') as converted_file:
bot.send_document(message.chat.id, converted_file)
5. Обработка ошибок
Добавьте обработку ошибок для отладки. Если бот не обрабатывает сообщение, он может завершаться из-за исключения. Для обработки таких случаев оберните код в блок try-except и выводите ошибки:

python
Копировать код
try:
# Основной код
except Exception as e:
logging.error(f"Произошла ошибка: {e}")
6. Запуск и тестирование
Попробуйте запустить бота и отправить изображение, проверяя логи для отладки.
Warplay Cloud Ученик (171) 1 месяц назад
павел дуров бухает вот и все и тг весь лагает
Анонимус Мудрец (16042) 3 дня назад
Чтобы ваш Telegram-бот корректно обрабатывал изображения и выполнял их конвертацию, нужно внести несколько изменений в ваш код. Во-первых, необходимо добавить обработчик для получения изображений, а также интегрировать функции конвертации в обработчик сообщений. Вот как можно сделать:
  • Добавить обработчик для получения изображений.
  • Вызвать функции конвертации в зависимости от того, какой формат вы хотите получить.
  • Убедиться, что вы правильно обрабатываете файлы и пути к ним.
 import telebot 
import datetime
import os
from PIL import Image

bot = telebot.TeleBot("№########:#######################")

@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Этот бот перепаковывает Img в Btx. Отправьте изображение для конвертации.")

@bot.message_handler(content_types=['photo'])
def handle_photo(message):
# Получаем файл изображения
file_info = bot.get_file(message.photo[-1].file_id) # Получаем файл наивысшего качества
downloaded_file = bot.download_file(file_info.file_path)

# Сохраняем файл во временное хранилище
temp_input_file = "temp_input.png"
with open(temp_input_file, 'wb') as new_file:
new_file.write(downloaded_file)

# Укажите имя выходного файла
temp_output_file = "output.btx"

# Здесь вы можете вызвать вашу функцию конвертации
# Например, если вы хотите конвертировать PNG в SHTX:
png_to_shtx("original.shtx", temp_input_file, temp_output_file)

# Отправляем обратно пользователю
with open(temp_output_file, 'rb') as output_file:
bot.send_document(message.chat.id, output_file)

# Удаляем временные файлы
os.remove(temp_input_file)
os.remove(temp_output_file)

def log(s):
print("[{}] {}".format(datetime.datetime.now(), s))

def shtx_to_png(in_path, out_path):
# Ваша реализация функции shtx_to_png
pass

def png_to_shtx(orig_path, in_path, out_path):
# Ваша реализация функции png_to_shtx
pass

bot.polling()
Похожие вопросы