Добрый день!
Может кто-то знает решение проблемы.
Вкратце: я решила создать телеграм-бот (к слову, это мой второй бот на питоне). Пока что,
основной функционал бота такой: пользователь после начала работы бота, нажимает на одну из двух кнопок "Совет" либо "Видео". Соответственно, из того что он выберет, ему бот присылает либо совет в текстовом виде (выбранный рандомно из txt файла), либо видео (также рандомно выбранное из готовой базы).
При запуске работы бота вылетает ошибка связанная с кодировкой utf-8 (код ошибки представлен ниже, после основного кода). Я пробовала просто убирать этот пункт с кодировкой, тогда вроде-бы работало, но косячно и через раз. Но при этом не работала кнопка для видео, то есть, просто бот в ответ ничего не присылал. Как это можно решить? Или может эти рандомные ответы текстовом и видео формате можно представить в другом, более простом варианте? Пока что еще была мысль - залить все эти видео в отдельный приватный канал, и когда пользователь запросит видео, то бот будет просто пересылать случайный пост с видео в чат (но пока не знаю как это реализовать, нет такого опыта)
import telebot
import random
from telebot import types
# Загружаем список интересных фактов
f = open('C:/Users/User/PycharmProjects/tgbot//facts.txt', 'r', encoding='UTF-8')
facts = f.read().split('\n')
f.close()
#Загружаем список видео
vid_list = ['C:/Users/User/PycharmProjects/tgbot/1.mp4', 'C:/Users/User/PycharmProjects/tgbot/2.mp4']
# Создаем бота
bot = telebot.TeleBot('ключ бота')
# Команда start
@bot.message_handler(commands=["start"])
def start(m, res=False):
# Добавляем две кнопки
markup=types.ReplyKeyboardMarkup(resize_keyboard=True)
item1=types.KeyboardButton("Совет")
item2=types.KeyboardButton("Видео")
markup.add(item1)
markup.add(item2)
bot.send_message(m.chat.id, 'Нажми: \nСовет — для получения интересного совета\nВидео — для получения видео ', reply_markup=markup)
# Получение сообщений от юзера
@bot.message_handler(content_types=["text"])
def handle_text(message):
# Если юзер прислал 1, выдаем ему случайный совет
if message.text.strip() == 'Совет' :
answer = random.choice(facts)
# Отсылаем юзеру сообщение в его чат
bot.send_message(message.chat.id, answer)
# Если юзер прислал 2, выдаём ему случайное видео
elif message.text == "Видео":
answer = random.choice(vid_list)
bot.send_video(message.chat.id, video=open(vid_list, 'rb'))
# Запускаем бота на постоянку
bot.polling(none_stop=True, interval=0)
Код ошибки:
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\tgbot\main.py", line 7, in
facts = f.read().split('\n')
^^^^^^^^
File "", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 3: invalid continuation byte
Process finished with exit code 1
То есть, по сути тут две проблемы:
с кодировкой 'utf-8' и реализация отправки в ответ видео
Буду рада любой помощи и советам :)