У меня есть два экземпляра телеграмм-ботов, работающих локально и на производственном сервере. Я дважды проверил, что все окружение одинаково, и установил с помощью virtualenv.
Локальная версия работает нормально, а prod - нет. Когда я нажимаю кнопки, ничего не происходит. Я обнаружил, что не работают только кнопки для одного конкретного текста.
Я поэкспериментировал дальше и обнаружил, что если я обрежу этот текст, вот так [0:386]
или меньше кнопок сработают, но в случае [0:387]
или больше, он остановится. Забавно, что если я отрежу голову [380:976]
(общая длина 976), это тоже сработает. Вот почему я предположил, что речь идет не о каком-то особом символе, потому что эти диапазоны перекрываются, и в этом месте нет ничего особенного (это середина слова), а не о переполнении буфера отправки, потому что большая часть строки работает просто отлично.
И, наконец, функция sendMessage
возвращает экземпляр объекта Message без ошибок, как говорит документация .
Вот часть кода:
def send_hello(self, chat_id):
text = BotText.objects.get(name=self.name).welcome
if text is None or text == '':
text = BotText.objects.get(name='common').welcome
reply_markup = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text='text_1',
callback_data="callback_data_1"
),
InlineKeyboardButton(
text='text_2',
callback_data='callback_data_2'
),
],
[
InlineKeyboardButton(
text='О проекте',
callback_data='about'
),
InlineKeyboardButton(
text='Контакты',
callback_data='contacts'
),
]
]
)
self.send_message(chat_id, text, parse_mode='Markdown', reply_markup=reply_markup)
def send_message(self, chat_id, text, parse_mode=None, reply_markup=None):
self.bot.sendMessage(
chat_id,
text,
parse_mode=parse_mode,
reply_markup=reply_markup,
)
Что еще можно проверить?
UPD:
Текст не включал, сри
Привет!
Это бот проекта *Роскомсвобода*.
Тут можно:
- поискать по реестру запрещенных сайтов и реестру организаторов распространения информации (ОРИ);
- выбрать себе VPN-сервис, с помощью которых можно восстановить доступ к неправомерно заблокированной информации;
- подключить наш прокси для Telegram;
- связаться с Роскомсвободой.
*1) Поиск*
Чтобы осуществить поиск введите ip-адрес или имя домена.
*2) Выбрать VPN*
В этом чате вы можете выбрать VPN-сервис из *VPNlove.me* - маркетплейса проверенных VPN.
Мы тщательно отбираем VPN-сервисы, которые размещаем в своем маркетплейсе.
Главные требования - это *уважение к частной жизни пользователей* и *запрет какой-либо цензуры*.
*3) Telegram-прокси*
Чтобы подключиться к Telegram через наш прокси - нажмите на ссылку
*4) Связаться с Роскомсвободой*
По общим вопросам: roskomsvoboda@rublacklist.net
Для СМИ: +7-903-003-89-52
По вопросам функционирования сервиса VPNlove.me: contact@vpnlove.me