-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #9 from tochka-lab-2021/task_and_state
Task and state classes
- Loading branch information
Showing
4 changed files
with
79 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,96 @@ | ||
#!/usr/bin/env python3 | ||
|
||
import random | ||
import telebot | ||
from task import Task | ||
from state import State | ||
|
||
|
||
def main(): | ||
# Call on "next" button press | ||
def on_next(user_state): | ||
task = gen_task() | ||
print(task) | ||
user_state.task = task.task | ||
user_state.answer = task.answer | ||
|
||
|
||
def user_state(user_id): | ||
return "" | ||
|
||
|
||
def detect_response(text): | ||
result = True | ||
def detect_response(user_state, text): | ||
result = False | ||
if text == user_state.answer: | ||
result = True | ||
|
||
if result: | ||
positive_response(user_state) | ||
else: | ||
negative_response(user_state) | ||
|
||
return result | ||
|
||
|
||
def negative_response(): | ||
def negative_response(user_state): | ||
user_state.negative_tries += 1 | ||
if user_state.negative_tries >= 2: | ||
return "Oops + button" | ||
return "Oops" | ||
|
||
|
||
def positive_response(): | ||
user_state.negative_tries = 0 | ||
return "OK!" | ||
|
||
|
||
def gen_task(): | ||
# gen 1st number | ||
a= random.randrange(1, 9, 1) | ||
a = random.randrange(1, 9, 1) | ||
# gen 2nd number | ||
b = random.randrange(1, 9, 1) | ||
return f"{a}x{b}" | ||
|
||
t = Task() | ||
t.task = f"{a}x{b}" | ||
t.answer = f"{a*b}" | ||
return t | ||
|
||
|
||
def get_user_state(user_id): | ||
|
||
return State() | ||
|
||
|
||
def save_user_state(user_state): | ||
return None | ||
|
||
# Start Bot | ||
f = open("token.txt", "r") | ||
token = f.read() | ||
bot = telebot.TeleBot(token, parse_mode=None) | ||
|
||
|
||
@bot.message_handler(commands=['start', 'help']) | ||
def on_start(message): | ||
bot.reply_to(message, "Привет! Давай порешаем примеры?") | ||
|
||
|
||
@bot.message_handler(func=lambda m: True) | ||
def on_all(message): | ||
user_id = message.from_user.id | ||
|
||
state = get_user_state(user_id) | ||
|
||
if state.task == None: | ||
# Generate new task, show to user. | ||
task = gen_task() | ||
state.task = task | ||
state.tries = 0 | ||
state.user_id = user_id | ||
save_user_state(state) | ||
bot.send_message(message.chat.id, task.task) | ||
else: | ||
# Check answer | ||
bot.send_message(message.chat.id, "Это ответ?") | ||
|
||
|
||
if __name__ == "__main__": | ||
main() | ||
bot.polling() |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
class State: | ||
# Telegram user id | ||
user_id = None | ||
# current task. type Task | ||
task = None | ||
# | ||
tries = 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
class Task: | ||
# "5x7" | ||
task = "" | ||
# "35" | ||
answer = "" |