Задать вопрос
@gusar_69

Почему питон не дастает файл из директории?

Только начал программировать ТГ ботов на питоне в PyChar
import telebot
import config

bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=['start'])
def wellcome(message):
    sti = open('C:\\Users\\*****\\PycharmProjects\\tgbot#1\\.venv\\wellcome.webp')
    
    bot.send_stiker(message.chat.id, sti)

    bot.send_message(message.chat.id, "Привет,{0.first_name}! Я эхобот от гусара. Я буду возвращать тебе любое текстовое сообщение)".format(message.from_user, bot.get_me()),
    parse_mode='html')


@bot.message_handler(content_types=['text'])
def lalala(message):
    bot.send_message(message.chat.id, message.text)


bot.polling(none_stop=True)
m. Столкнулся с проблемой. Пайтон не достаёт стикер.webp сохраненный в папке .venv никак, пробовал полным путем с дублированными обратными слэшами, через static/*имя файла.webp

без этой части
sti = open('C:\\Users\\*****\\PycharmProjects\\tgbot#1\\.venv\\wellcome.webp')

bot.send_stiker(message.chat.id, sti)
бот работает превосходно
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
А как насчёт документацию почитать?

Параметры:
chat_id (int or str) – Уникальный id чата или username канала (в формате @channelusername)
sticker (str or telebot.types.InputFile) – Стикер для отправки. Передайте file_id (String), чтобы отправить файл, который уже загружен на сервера Telegram (рекомендуется), передайте HTTP URL (String), чтобы отправить .webp файл из интернета или загрузите новый с помощью multipart/form-data.

Выделение моё. Т.е. параметр стикер интерпретирует принятую строку только двумя способами:
1. Как ID уже загруженного стикера
2. Как ссылку на стикер из интернета
Про путь на локальной машине тут ничего не говорится. Зато упоминается про тип InputFile. Примеры по ссылке показывают, что в этот тип можно обернуть путь к локальному файлу, чтобы загрузить его в телегу, а после этого уже полученный объект InputFile можно передать в нужный метод.
Т.е. сначала заверни свой путь в telebot.types.InputFile, а потом передай его вторым параметром в send_sticker().
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 00:01
500 руб./за проект
17 янв. 2025, в 23:56
10000 руб./за проект