Форум сайта python.su
Только учу питон. Понадобилось бот для телеграмм. Решил сам написать. Вроде все правильно но кажись где то пропускаю элементарную вещь которая выдает ошибку… Первую функцию выполняет, на втором “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 (Янв. 28, 2021 12:56:29)
Офлайн
numarcon
Вы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.
Офлайн
FishHookК сожалению ваш ответ меня еще больше озадачил..
numarconВы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.
Офлайн
numarconВам нужно научиться четко понимать,для чего нужна каждая строка этого кода.А так завтра ты заберешься в кабину самолета и скажешь чего тут сложного в кино вот эти рычаги толкали эти кнопки нажимали,вроде все также делаю,только не взлетает,помогите пожалуйста,что я делаю не так.
Только учу питон. Понадобилось бот для телеграмм. Решил сам написать
Отредактировано xam1816 (Янв. 28, 2021 15:54:40)
Офлайн
numarconПонимаете, если бы у вас была программа, которую я могу скопировать с форума, вставить в свою IDE, выполнить и увидеть ошибки, смог бы её отдебажить, я бы вам помог. Но бот, это же гораздо сложнее задача. Не буду же я регистрироваться в телеграмме, поднимать сервер и запускать на нем бота, чтобы проанализировать вашу ошибку. Такой уровень задач подразумевает, что вы уже сами в состоянии отдебажить вашу программу. Помочь вам могут если вы сами проделали необходимые мероприятия по расследованию инцедента. Ну а тут извините, стеклянного шара ни у кого нет, а тратить полдня для настройки тестовой среды для бота никому тоже не охота.
К сожалению ваш ответ меня еще больше озадачил..
Убирал “try” но ничего не поменялось, ну кроме того что перестала отвечать “zaebaloops”. Ошибок не показывает…
Офлайн
у меня есть тестовая среда и в его коде не понятно откуда взялся
user = user_dict[chat_id]
bot.register_next_step_handler(msg, marshrut)
Офлайн
Именно с функцией “polomka” проблемы, куда не ставлю эту функцию, там же и останавливается
xam1816
у меня есть тестовая среда и в его коде не понятно откуда взялся
Офлайн
xam1816user = user_dict
user = user_dict
Офлайн
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)
Офлайн
у тебя
user_dict = {}
user = user_dict['146436454']
user_dict['146436454']=?????
Офлайн