Skip to content
This repository has been archived by the owner on Jun 2, 2019. It is now read-only.

Problems with sending two times the same file/photo #442

Open
pfasciani opened this issue Jan 20, 2019 · 1 comment
Open

Problems with sending two times the same file/photo #442

pfasciani opened this issue Jan 20, 2019 · 1 comment

Comments

@pfasciani
Copy link

I'm creating a bot for me and my classmates and i'm struggling with this error

Traceback (most recent call last): File "build/bdist.macosx-10.13-intel/egg/telepot/__init__.py", line 1158, in collector callback(item) File "/Users/piergiuliofasciani/Documents/bot.py", line 30, in on_chat_message [KeyboardButton(text="Torna al menu principale")] File "build/bdist.macosx-10.13-intel/egg/telepot/__init__.py", line 539, in sendPhoto return self._api_request_with_file('sendPhoto', _rectify(p), 'photo', photo) File "build/bdist.macosx-10.13-intel/egg/telepot/__init__.py", line 499, in _api_request_with_file return self._api_request(method, _rectify(params), files, **kwargs) File "build/bdist.macosx-10.13-intel/egg/telepot/__init__.py", line 491, in _api_request return api.request((self._token, method, params, files), **kwargs) File "build/bdist.macosx-10.13-intel/egg/telepot/api.py", line 155, in request return _parse(r) File "build/bdist.macosx-10.13-intel/egg/telepot/api.py", line 150, in _parse raise exception.TelegramError(description, error_code, data) TelegramError: (u'Bad Request: file must be non-empty', 400, {u'error_code': 400, u'ok': False, u'description': u'Bad Request: file must be non-empty'})

This occurs only when I ask two times for the same Photo or File without restarting the bot.

Can I fix this?

Here's my code

`import telepot
import io
import time
from telepot.namedtuple import ReplyKeyboardMarkup, KeyboardButton
import emoji
import os

orario = (os.path.basename("/Users/piergiuliofasciani/Desktop/orario.jpg"), open("/Users/piergiuliofasciani/Desktop/orario.jpg"))

def on_chat_message(msg):
content_type, chat_type, chat_id = telepot.glance(msg)

command = msg['text']

if command == "/start":
    bot.sendMessage(chat_id, "In cosa posso esserti utile?",
                        reply_markup=ReplyKeyboardMarkup(
                        keyboard=[
                        [KeyboardButton(text=emoji.emojize(":watch: Orario :watch:", use_aliases=True)), KeyboardButton(text=emoji.emojize(':page_with_curl: Compiti :page_with_curl:', use_aliases=True)), KeyboardButton(text=emoji.emojize(":bookmark_tabs: Circolari :bookmark_tabs:", use_aliases=True))],
                        [KeyboardButton(text=emoji.emojize(":exclamation: Avvisi :exclamation:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":boom: Verifiche in Arrivo :boom:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":loudspeaker: Breaking News :loudspeaker:", use_aliases=True))],
                        [KeyboardButton(text=emoji.emojize(":satisfied: Meme del giorno :satisfied:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":rocket: Credits :rocket:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":question: Aiuto :question:", use_aliases=True))],

                        ]
                        )),

elif command == emoji.emojize(":watch: Orario :watch:", use_aliases=True):
    bot.sendPhoto(chat_id, orario, "Ecco qui",
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

elif command == emoji.emojize(':page_with_curl: Compiti :page_with_curl:', use_aliases=True):
    bot.sendMessage(chat_id, 'Per quale giorno?',
                        reply_markup=ReplyKeyboardMarkup(
                        keyboard=[
                        [KeyboardButton(text="Lunedi"), KeyboardButton(text="Martedi"), KeyboardButton(text="Mercoledi")],
                        [KeyboardButton(text="Giovedi"), KeyboardButton(text="Venerdi"), KeyboardButton(text="Sabato")],
                        [KeyboardButton(text="Torna al menu principale")]
                        ]
                        )),

elif command == "Torna al menu principale":
    bot.sendMessage(chat_id, "D'accordo!",
                        reply_markup=ReplyKeyboardMarkup(
                        keyboard=[
                        [KeyboardButton(text=emoji.emojize(":watch: Orario :watch:", use_aliases=True)), KeyboardButton(text=emoji.emojize(':page_with_curl: Compiti :page_with_curl:', use_aliases=True)), KeyboardButton(text=emoji.emojize(":bookmark_tabs: Circolari :bookmark_tabs:", use_aliases=True))],
                        [KeyboardButton(text=emoji.emojize(":exclamation: Avvisi :exclamation:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":boom: Verifiche in Arrivo :boom:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":loudspeaker: Breaking News :loudspeaker:", use_aliases=True))],
                        [KeyboardButton(text=emoji.emojize(":satisfied: Meme del giorno :satisfied:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":rocket: Credits :rocket:", use_aliases=True)), KeyboardButton(text=emoji.emojize(":question: Aiuto :question:", use_aliases=True))],
                        ]
                        )),

elif command == emoji.emojize(":bookmark_tabs: Circolari :bookmark_tabs:", use_aliases=True):
    bot.sendMessage(chat_id, emoji.emojize(":sweat_smile: Scusa, non ancora disponibile :sweat_smile:", use_aliases=True),
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

elif command == emoji.emojize(":exclamation: Avvisi :exclamation:", use_aliases=True):
    bot.sendMessage(chat_id, emoji.emojize(":sweat_smile: Scusa, non ancora disponibile :sweat_smile:", use_aliases=True),
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

elif command == emoji.emojize(":boom: Verifiche in Arrivo :boom:", use_aliases=True):
    bot.sendMessage(chat_id, emoji.emojize(":sweat_smile: Scusa, non ancora disponibile :sweat_smile:", use_aliases=True),
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

elif command == emoji.emojize(":rocket: Credits :rocket:", use_aliases=True):
    bot.sendMessage(chat_id, emoji.emojize(":sweat_smile: Scusa, non ancora disponibile :sweat_smile:", use_aliases=True),
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

elif command == emoji.emojize(":question: Aiuto :question:", use_aliases=True):
    bot.sendMessage(chat_id, emoji.emojize(":sweat_smile: Scusa, non ancora disponibile :sweat_smile:", use_aliases=True),
                    reply_markup=ReplyKeyboardMarkup(
                    keyboard=[
                    [KeyboardButton(text="Torna al menu principale")]
                    ]
                    )),

bot = telepot.Bot(token)
bot.message_loop(on_chat_message)
print("Awaiting Input...")
while True:
time.sleep(10)`

@afsantaliestra
Copy link

afsantaliestra commented Feb 13, 2019

Hello @pfasciani

The problem is not from the telepot module. Its something with the io.BufferedReader built-in module, i don't know what happens but here is the workaround:

Open the file every time you need to send the photo instead once globally.
Sample:

elif command == emoji.emojize(":watch: Orario :watch:", use_aliases=True):
with open("/Users/piergiuliofasciani/Desktop/orario.jpg", 'rb') as photo:
bot.sendPhoto(chat_id, photo, "Ecco qui",
reply_markup=ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="Torna al menu principale")]
]
)),

Hope this will help you.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants