Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2021 12:32:26

numarcon
Зарегистрирован: 2021-01-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

Только учу питон. Понадобилось бот для телеграмм. Решил сам написать. Вроде все правильно но кажись где то пропускаю элементарную вещь которая выдает ошибку… Первую функцию выполняет, на втором “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)

Офлайн

#2 Янв. 28, 2021 12:59:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

numarcon
Вы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.



Офлайн

#3 Янв. 28, 2021 14:11:21

numarcon
Зарегистрирован: 2021-01-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

FishHook
numarconВы себе сейчас сами в ногу стреляете. У вас происходит исключение, вы это исключение перехватили и вместо объемлющей информации о состоянии программы на момент исключения, вместо стека вызовов у вас есть только “zaebaloops”. Зачем так? Позвольте исключению случиться и смотрите в лог программы, там будет гораздо больше информации.
К сожалению ваш ответ меня еще больше озадачил..
Убирал “try” но ничего не поменялось, ну кроме того что перестала отвечать “zaebaloops”. Ошибок не показывает…

Офлайн

#4 Янв. 28, 2021 15:52:53

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  121  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

numarcon
Только учу питон. Понадобилось бот для телеграмм. Решил сам написать
Вам нужно научиться четко понимать,для чего нужна каждая строка этого кода.А так завтра ты заберешься в кабину самолета и скажешь чего тут сложного в кино вот эти рычаги толкали эти кнопки нажимали,вроде все также делаю,только не взлетает,помогите пожалуйста,что я делаю не так.
Тебе помогут если ты в следующем сообщении расскажешь,что делает каждая строка твоего кода

Отредактировано xam1816 (Янв. 28, 2021 15:54:40)

Офлайн

#5 Янв. 28, 2021 16:36:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

numarcon
К сожалению ваш ответ меня еще больше озадачил..
Убирал “try” но ничего не поменялось, ну кроме того что перестала отвечать “zaebaloops”. Ошибок не показывает…
Понимаете, если бы у вас была программа, которую я могу скопировать с форума, вставить в свою IDE, выполнить и увидеть ошибки, смог бы её отдебажить, я бы вам помог. Но бот, это же гораздо сложнее задача. Не буду же я регистрироваться в телеграмме, поднимать сервер и запускать на нем бота, чтобы проанализировать вашу ошибку. Такой уровень задач подразумевает, что вы уже сами в состоянии отдебажить вашу программу. Помочь вам могут если вы сами проделали необходимые мероприятия по расследованию инцедента. Ну а тут извините, стеклянного шара ни у кого нет, а тратить полдня для настройки тестовой среды для бота никому тоже не охота.



Офлайн

#6 Янв. 28, 2021 17:05:35

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  121  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

у меня есть тестовая среда и в его коде не понятно откуда взялся

 user = user_dict[chat_id]
и в конце
 bot.register_next_step_handler(msg, marshrut)

про marshrut что-то ничего нет.Код не полный,а без них все работает

Офлайн

#7 Янв. 28, 2021 17:42:41

numarcon
Зарегистрирован: 2021-01-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

Именно с функцией “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)

Офлайн

#8 Янв. 28, 2021 17:44:43

numarcon
Зарегистрирован: 2021-01-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

xam1816
user = user_dict
user = user_dict

в config.py содержится только токен

Офлайн

#9 Янв. 28, 2021 17:46:07

numarcon
Зарегистрирован: 2021-01-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

 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)

Офлайн

#10 Янв. 28, 2021 18:12:02

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  121  -
Профиль   Отправить e-mail  

pyTelegramBotAPI ошибка

у тебя

 user_dict = {}
пустой,там нет ничего
ты присваиваешь значение из этого словаря
 user = user_dict['146436454']

на каком этапе вы его добавили?
 user_dict['146436454']=?????

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version