Skip to content

Commit

Permalink
Merge pull request #1325 from coder2020official/master
Browse files Browse the repository at this point in the history
Critical fix
  • Loading branch information
Badiboy authored Oct 1, 2021
2 parents 5014ca2 + bf8736e commit 14cc15c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
16 changes: 16 additions & 0 deletions examples/custom_states.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,27 @@

@bot.message_handler(commands=['start'])
def start_ex(message):
"""
Start command. Here we are starting state
"""
bot.set_state(message.chat.id, 1)
bot.send_message(message.chat.id, 'Hi, write me a name')



@bot.message_handler(state="*", commands='cancel')
def any_state(message):
"""
Cancel state
"""
bot.send_message(message.chat.id, "Your state was cancelled.")
bot.delete_state(message.chat.id)

@bot.message_handler(state=1)
def name_get(message):
"""
State 1. Will process when user's state is 1.
"""
bot.send_message(message.chat.id, f'Now write me a surname')
bot.set_state(message.chat.id, 2)
with bot.retrieve_data(message.chat.id) as data:
Expand All @@ -28,21 +37,28 @@ def name_get(message):

@bot.message_handler(state=2)
def ask_age(message):
"""
State 2. Will process when user's state is 2.
"""
bot.send_message(message.chat.id, "What is your age?")
bot.set_state(message.chat.id, 3)
with bot.retrieve_data(message.chat.id) as data:
data['surname'] = message.text

# result
@bot.message_handler(state=3, is_digit=True)
def ready_for_answer(message):
with bot.retrieve_data(message.chat.id) as data:
bot.send_message(message.chat.id, "Ready, take a look:\n<b>Name: {name}\nSurname: {surname}\nAge: {age}</b>".format(name=data['name'], surname=data['surname'], age=message.text), parse_mode="html")
bot.delete_state(message.chat.id)

#incorrect number
@bot.message_handler(state=3, is_digit=False)
def age_incorrect(message):
bot.send_message(message.chat.id, 'Looks like you are submitting a string in the field age. Please enter a number')

# register filters

bot.add_custom_filter(custom_filters.StateFilter(bot))
bot.add_custom_filter(custom_filters.IsDigitFilter())
bot.infinity_polling(skip_pending=True)
5 changes: 3 additions & 2 deletions telebot/custom_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,9 @@ def __init__(self, bot):

def check(self, message, text):
if self.bot.current_states.current_state(message.from_user.id) is False:return False
elif '*' in text:return True
return self.bot.current_states.current_state(message.from_user.id) in text
elif text == '*':return True
elif type(text) is list:return self.bot.current_states.current_state(message.from_user.id) in text
return self.bot.current_states.current_state(message.from_user.id) == text

class IsDigitFilter(SimpleCustomFilter):
"""
Expand Down

0 comments on commit 14cc15c

Please sign in to comment.