Найти - Пользователи
Полная версия: pyTelegramBotAPI ошибка
Начало » Python для новичков » pyTelegramBotAPI ошибка
1 2 3 4
numarcon
Только учу питон. Понадобилось бот для телеграмм. Решил сам написать. Вроде все правильно но кажись где то пропускаю элементарную вещь которая выдает ошибку… Первую функцию выполняет, на втором “zaebaloops!”


 @bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
    itembtn1 = types.KeyboardButton('1')
    itembtn2 = types.KeyboardButton('2')
    itembtn3 = types.KeyboardButton('3')
    itembtn4 = types.KeyboardButton('4')
    itembtn5 = types.KeyboardButton('5')
    itembtn6 = types.KeyboardButton('6')
    markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5, itembtn6)
    msg = bot.send_message(message.chat.id, 'Выберите', reply_markup=markup)
    bot.register_next_step_handler(msg, polomka)
def polomka(message):
    try:
        chat_id = message.chat.id
        user = user_dict[chat_id]
        user.carModel = message.text
        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, row_width=2)
        itembtn1 = types.KeyboardButton('1')
        itembtn2 = types.KeyboardButton('2')
        itembtn3 = types.KeyboardButton('3')
        itembtn4 = types.KeyboardButton('4')
        markup.add(itembtn1, itembtn2, itembtn3, itembtn4)
        msg = bot.send_message(chat_id, 'Причина', reply_markup=markup)
        bot.register_next_step_handler(msg, marshrut)
    except Exception as e:
        bot.reply_to(message, 'zaebaloops!!')
FishHook
numarcon
Вы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.
numarcon
FishHook
numarconВы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.
К сожалению ваш ответ меня еще больше озадачил..
Убирал “try” но ничего не поменялось, ну кроме того что перестала отвечать “zaebaloops”. Ошибок не показывает…
xam1816
numarcon
Только учу питон. Понадобилось бот для телеграмм. Решил сам написать
Вам нужно научиться четко понимать,для чего нужна каждая строка этого кода.А так завтра ты заберешься в кабину самолета и скажешь чего тут сложного в кино вот эти рычаги толкали эти кнопки нажимали,вроде все также делаю,только не взлетает,помогите пожалуйста,что я делаю не так.
Тебе помогут если ты в следующем сообщении расскажешь,что делает каждая строка твоего кода
FishHook
numarcon
К сожалению ваш ответ меня еще больше озадачил..
Убирал “try” но ничего не поменялось, ну кроме того что перестала отвечать “zaebaloops”. Ошибок не показывает…
Понимаете, если бы у вас была программа, которую я могу скопировать с форума, вставить в свою IDE, выполнить и увидеть ошибки, смог бы её отдебажить, я бы вам помог. Но бот, это же гораздо сложнее задача. Не буду же я регистрироваться в телеграмме, поднимать сервер и запускать на нем бота, чтобы проанализировать вашу ошибку. Такой уровень задач подразумевает, что вы уже сами в состоянии отдебажить вашу программу. Помочь вам могут если вы сами проделали необходимые мероприятия по расследованию инцедента. Ну а тут извините, стеклянного шара ни у кого нет, а тратить полдня для настройки тестовой среды для бота никому тоже не охота.
xam1816
у меня есть тестовая среда и в его коде не понятно откуда взялся
 user = user_dict[chat_id]
и в конце
 bot.register_next_step_handler(msg, marshrut)

про marshrut что-то ничего нет.Код не полный,а без них все работает
numarcon
Именно с функцией “polomka” проблемы, куда не ставлю эту функцию, там же и останавливается
xam1816
у меня есть тестовая среда и в его коде не понятно откуда взялся

import config
import telebot

from string import Template
from telebot import types

bot = telebot.TeleBot(config.token)

user_dict = {}


class User:
def __init__(self, city):
self.city = city

keys = ['fullname', ‘phone’, ‘driverSeria’,
‘driverNumber’, ‘driverDate’, ‘car’,
‘carModel’, ‘carColor’, ‘carNumber’, ‘carDate’]

for key in keys:
self.key = None

@bot.message_handler(commands
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
itembtn1 = types.KeyboardButton('Shymbus')
itembtn2 = types.KeyboardButton('T-Bus')
itembtn3 = types.KeyboardButton('Абдуганиев')
itembtn4 = types.KeyboardButton('Санжар-моторс')
itembtn5 = types.KeyboardButton('ИП Беркут')
itembtn6 = types.KeyboardButton('ГринБас')
markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5, itembtn6)

msg = bot.send_message(message.chat.id, ‘Выберите Автопарк’, reply_markup=markup)
bot.register_next_step_handler(msg, polomka)


def polomka(message):
try:
chat_id = message.chat.id
user = user_dict
user.carModel = message.text

markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, row_width=2)
itembtn1 = types.KeyboardButton('Мобильный терминал не работает')
itembtn2 = types.KeyboardButton('Стационар не работает')
itembtn3 = types.KeyboardButton('Моб и стационар не работает')
itembtn4 = types.KeyboardButton('Нет звука')
markup.add(itembtn1, itembtn2, itembtn3, itembtn4)

msg = bot.send_message(chat_id, ‘Причина поломки’, reply_markup=markup)
bot.register_next_step_handler(msg, marshrut)

except Exception as e:
bot.reply_to(message, ‘zaebaloops!!’)


def marshrut(message):
try:

chat_id = message.chat.id
user = user_dict
user.carNumber = message.text

# удалить старую клавиатуру
markup = types.ReplyKeyboardRemove(selective=False)

msg = bot.send_message(chat_id, ‘Введите маршрут автобуса’, reply_markup=markup)
bot.register_next_step_handler(msg, number)

except Exception as e:
bot.reply_to(message, ‘Не верный формат!!’)


def number(message):
try:

chat_id = message.chat.id
user = user_dict
user.carColor = message.text
# удалить старую клавиатуру
markup = types.ReplyKeyboardRemove(selective=False)

msg = bot.send_message(chat_id, ‘Введите телефон номер водителя’, reply_markup=markup)
bot.register_next_step_handler(msg, process_carDate_step)

except Exception as e:
bot.reply_to(message, ‘Не верный формат!!’)


def process_carDate_step(message):
try:
int(message.text)
chat_id = message.chat.id
user = user_dict
user.carDate = message.text

# ваша заявка “Имя пользователя”
bot.send_message(chat_id, getRegData(user, ‘Ваша заявка’, message.from_user.first_name), parse_mode=“Markdown”)
# отправить в группу
bot.send_message(chat_id, getRegData(user, ‘Заявка от бота’, bot.get_me().username), parse_mode=“Markdown”)

except Exception as e:
bot.reply_to(message, ‘ooops!!’)


def getRegData(user, title, name):
t = Template(
‘$title *$name* \n Город: *$userCity* \n ФИО: *$fullname* \n Телефон: *$phone* \n Серия водительского удостоверения: *$driverSeria* \n Номер водительского удостоверения: *$driverNumber* \n Дата выдачи водительского удостоверения: *$driverDate* \n Марка автомобиля: *$car* \n Модель автомобиля: *$carModel* \n Цвет автомобиля: *$carColor* \n Гос. номер автомобиля: *$carNumber* \n Год выпуска: *$carDate*’)

return t.substitute({
‘title’: title,
‘name’: name,
‘phone’: user.phone,
‘driverNumber’: user.driverNumber,
‘driverDate’: user.driverDate,
‘car’: user.car,
‘carModel’: user.carModel,
‘carColor’: user.carColor,
‘carNumber’: user.carNumber,
‘carDate’: user.carDate,
})


bot.enable_save_next_step_handlers(delay=2)


if __name__ == ‘__main__’:
bot.polling(none_stop=True)
numarcon
xam1816
user = user_dict
user = user_dict

в config.py содержится только токен
numarcon
 import config
import telebot
from string import Template
from telebot import types
bot = telebot.TeleBot(config.token)
user_dict = {}
class User:
    def __init__(self, city):
        self.city = city
        keys = ['fullname', 'phone', 'driverSeria',
                'driverNumber', 'driverDate', 'car',
                'carModel', 'carColor', 'carNumber', 'carDate']
        for key in keys:
            self.key = None
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
    itembtn1 = types.KeyboardButton('Shymbus')
    itembtn2 = types.KeyboardButton('T-Bus')
    itembtn3 = types.KeyboardButton('Абдуганиев')
    itembtn4 = types.KeyboardButton('Санжар-моторс')
    itembtn5 = types.KeyboardButton('ИП Беркут')
    itembtn6 = types.KeyboardButton('ГринБас')
    markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5, itembtn6)
    msg = bot.send_message(message.chat.id, 'Выберите Автопарк', reply_markup=markup)
    bot.register_next_step_handler(msg, polomka)
def polomka(message):
    try:
        chat_id = message.chat.id
        user = user_dict['146436454']
        user.carModel = message.text
        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, row_width=2)
        itembtn1 = types.KeyboardButton('Мобильный терминал не работает')
        itembtn2 = types.KeyboardButton('Стационар не работает')
        itembtn3 = types.KeyboardButton('Моб и стационар не работает')
        itembtn4 = types.KeyboardButton('Нет звука')
        markup.add(itembtn1, itembtn2, itembtn3, itembtn4)
        msg = bot.send_message(chat_id, 'Причина поломки', reply_markup=markup)
        bot.register_next_step_handler(msg, marshrut)
    except Exception as e:
        bot.reply_to(message, 'zaebaloops!!')
def marshrut(message):
    try:
        chat_id = message.chat.id
        user = user_dict['146436454']
        user.carNumber = message.text
    # удалить старую клавиатуру
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(chat_id, 'Введите маршрут автобуса', reply_markup=markup)
        bot.register_next_step_handler(msg, number)
    except Exception as e:
        bot.reply_to(message, 'Не верный формат!!')
def number(message):
    try:
        chat_id = message.chat.id
        user = user_dict['146436454']
        user.carColor = message.text
        # удалить старую клавиатуру
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(chat_id, 'Введите телефон номер водителя', reply_markup=markup)
        bot.register_next_step_handler(msg, process_carDate_step)
    except Exception as e:
        bot.reply_to(message, 'Не верный формат!!')
def process_carDate_step(message):
    try:
        int(message.text)
        chat_id = message.chat.id
        user = user_dict[146436454]
        user.carDate = message.text
        # ваша заявка "Имя пользователя"
        bot.send_message(chat_id, getRegData(user, 'Ваша заявка', message.from_user.first_name), parse_mode="Markdown")
        # отправить в группу
        bot.send_message(chat_id, getRegData(user, 'Заявка от бота', bot.get_me().username), parse_mode="Markdown")
    except Exception as e:
        bot.reply_to(message, 'ooops!!')
def getRegData(user, title, name):
    t = Template(
        '$title *$name* \n Город: *$userCity* \n ФИО: *$fullname* \n Телефон: *$phone* \n Серия водительского удостоверения: *$driverSeria* \n Номер водительского удостоверения: *$driverNumber* \n Дата выдачи водительского удостоверения: *$driverDate* \n Марка автомобиля: *$car* \n Модель автомобиля: *$carModel* \n Цвет автомобиля: *$carColor* \n Гос. номер автомобиля: *$carNumber* \n Год выпуска: *$carDate*')
    return t.substitute({
        'title': title,
        'name': name,
        'phone': user.phone,
        'driverNumber': user.driverNumber,
        'driverDate': user.driverDate,
        'car': user.car,
        'carModel': user.carModel,
        'carColor': user.carColor,
        'carNumber': user.carNumber,
        'carDate': user.carDate,
    })
bot.enable_save_next_step_handlers(delay=2)
if __name__ == '__main__':
    bot.polling(none_stop=True)
xam1816
у тебя
 user_dict = {}
пустой,там нет ничего
ты присваиваешь значение из этого словаря
 user = user_dict['146436454']

на каком этапе вы его добавили?
 user_dict['146436454']=?????
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB