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

Офлайн
0
xam1816user = user_dict
user = user_dict
Офлайн
0
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)
Офлайн
124
у тебя
user_dict = {}
user = user_dict['146436454']
user_dict['146436454']=?????
Офлайн