diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d07a056..fd5edac 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,10 @@
-
+
+
+
+
@@ -44,6 +47,8 @@
"keyToString": {
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
"ModuleVcsDetector.initialDetectionPerformed": "true",
+ "Python.Fox_hahBot.executor": "Run",
+ "Python.filemanager.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "main",
@@ -60,10 +65,11 @@
-
+
+
@@ -160,7 +166,15 @@
1775141509258
-
+
+
+ 1775199686999
+
+
+
+ 1775199686999
+
+
@@ -171,7 +185,9 @@
@@ -187,7 +203,8 @@
-
+
+
diff --git a/BotForTelegramm/.idea/.gitignore b/BotForTelegramm/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/BotForTelegramm/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/BotForTelegramm/.idea/BotForTelegramm.iml b/BotForTelegramm/.idea/BotForTelegramm.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/BotForTelegramm/.idea/BotForTelegramm.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/.idea/inspectionProfiles/Project_Default.xml b/BotForTelegramm/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..06bb031
--- /dev/null
+++ b/BotForTelegramm/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/.idea/inspectionProfiles/profiles_settings.xml b/BotForTelegramm/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/BotForTelegramm/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/.idea/misc.xml b/BotForTelegramm/.idea/misc.xml
new file mode 100644
index 0000000..d082703
--- /dev/null
+++ b/BotForTelegramm/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/.idea/modules.xml b/BotForTelegramm/.idea/modules.xml
new file mode 100644
index 0000000..5035bda
--- /dev/null
+++ b/BotForTelegramm/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/.idea/vcs.xml b/BotForTelegramm/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/BotForTelegramm/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BotForTelegramm/Fox_hahBot.py b/BotForTelegramm/Fox_hahBot.py
deleted file mode 100644
index 3cefe5c..0000000
--- a/BotForTelegramm/Fox_hahBot.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import random
-
-import telebot
-
-import filemanager
-
-token = "8379986047:AAGr74CT6Y2a8moIWL4Otsntu1CjozdF9ec"
-
-bot = telebot.TeleBot(token)
-wins = {}
-loose = {}
-draw = {}
-dif = {}
-
-def addUserIfNotExist(message):
- if not wins[message.from_user.id]:
- wins[message.from_user.id] = 0
- filemanager.save_to_file(wins.txt, wins)
- if not loose[message.from_user.id]:
- loose[message.from_user.id] = 0
- filemanager.save_to_file(loose.txt, loose)
- if not draw[message.from_user.id]:
- draw[message.from_user.id] = 0
- filemanager.save_to_file(draw.txt, draw)
- if not dif[message.from_user.id]:
- dif[message.from_user.id] = 0
- filemanager.save_to_file(dif.txt, dif)
-
-@bot.message_handler(commands=['start'])
-def start(message):
- bot.send_message(message.chat.id, 'Привет, это игра "Камень, ножницы, бумага"')
-
-@bot.message_handler(commands=['rules'])
-def rules(message):
- bot.send_message(message.chat.id, 'Правила: выбираешь "Камень", "Ножницы" или "Бумага", если ты выиграл я напишу, а если нет, то ладно')
-
-@bot.message_handler(func=lambda message:True)
-def main_game(message):
- ans = random.randint(1,3) #1 - камень, 2 - бумага, 3 - ножницы
- if message.text == "Камень" and ans == 1:
- bot.send_message(message.chat.id, "Ничья")
- elif message.text == "Камень" and ans == 2:
- bot.send_message(message.chat.id, "ХАХАХАХ!!! ТЫ ПРОИГРАЛ!")
- elif message.text == "Камень" and ans == 3:
- bot.send_message(message.chat.id, "НУУ БЛИИИН!!! ТЫ ВЫИГРАЛ!")
- elif message.text == "Бумага" and ans == 2:
- bot.send_message(message.chat.id, "Ничья")
- elif message.text == "Бумага" and ans == 3:
- bot.send_message(message.chat.id, "ХАХАХАХ!!! ТЫ ПРОИГРАЛ!")
- elif message.text == "Бумага" and ans == 1:
- bot.send_message(message.chat.id, "НУУ БЛИИИН!!! ТЫ ВЫИГРАЛ!")
- elif message.text == "Ножницы" and ans == 1:
- bot.send_message(message.chat.id, "ХАХАХАХ!!! ТЫ ПРОИГРАЛ!")
- elif message.text == "Ножницы" and ans == 2:
- bot.send_message(message.chat.id, "НУУ БЛИИИН!!! ТЫ ВЫИГРАЛ!")
- elif message.text == "Ножницы" and ans == 3:
- bot.send_message(message.chat.id, "Ничья")
-
-bot.infinity_polling()
\ No newline at end of file
diff --git a/BotForTelegramm/main.py b/BotForTelegramm/main.py
new file mode 100644
index 0000000..5294718
--- /dev/null
+++ b/BotForTelegramm/main.py
@@ -0,0 +1,103 @@
+import telebot
+import random
+from telebot import types
+import filemanager
+
+token = "8379986047:AAGr74CT6Y2a8moIWL4Outspent1CajoledF9ec"
+bot = telebot.TeleBot(token)
+
+keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
+button1 = types.KeyboardButton("Камень")
+button2 = types.KeyboardButton("Ножницы")
+button3 = types.KeyboardButton("Бумага")
+keyboard.add(button1, button2, button3)
+
+userLink = {}
+wins = {}
+looses = {}
+draws = {}
+dif = {}
+
+Rock = {}
+Paper = {}
+Scissors = {}
+
+def addUserIfNotExist(message):
+ uid = message.chat.id
+ if uid not in userLink: userLink[uid] = 0 #персональный счётчик
+ filemanager.save_to_file(uid.txt, uid)
+ if uid not in wins: wins[uid] = 0
+ filemanager.save_to_file(wins.txt, wins)
+ if uid not in looses: looses[uid] = 0
+ filemanager.save_to_file(looses.txt, looses)
+ if uid not in draws: draws[uid] = 0
+ filemanager.save_to_file(draws.txt, draws)
+ if uid not in Rock: Rock[uid] = 0
+ filemanager.save_to_file(Rock.txt, Rock)
+ if uid not in Paper: Paper[uid] = 0
+ filemanager.save_to_file(Paper.txt, Paper)
+ if uid not in Scissors: Scissors[uid] = 0
+ filemanager.save_to_file(Scissors.txt, Scissors)
+ return userLink.get(uid)
+
+@bot.message_handler(commands=['start'])
+def start(message):
+ addUserIfNotExist(message)
+ bot.send_message(message.chat.id, 'Привет! Выбери уровень:\n/easy\n/normal\n/hard\n/mega_hard', reply_markup=keyboard)
+
+@bot.message_handler(commands=['easy', 'normal', 'hard', 'mega_hard'])
+def difficulty(message):
+ addUserIfNotExist(message)
+ if message.text == "/easy": userLink[message.chat.id] = 1
+ elif message.text == "/normal": userLink[message.chat.id] = 2
+ elif message.text == "/hard": userLink[message.chat.id] = 3
+ elif message.text == "/mega_hard": userLink[message.chat.id] = 4
+ bot.send_message(message.chat.id, f"Уровень {message.text} выбран")
+
+@bot.message_handler(func=lambda message: True)
+def main_game(message):
+ level = addUserIfNotExist(message)
+ u_move = message.text.lower()
+ uid = message.chat.id
+
+ if u_move not in ["камень", "ножницы", "бумага"]:
+ bot.send_message(uid, "Используй кнопки!")
+ return
+
+ if u_move == "камень": Rock[uid] += 1
+ elif u_move == "ножницы": Scissors[uid] += 1
+ elif u_move == "бумага": Paper[uid] += 1
+
+ if level == 1:
+ botans = "Ножницы" if u_move == "камень" else "Камень" if u_move == "бумага" else "Бумага"
+ elif level == 3:
+ botans = "Бумага" if u_move == "камень" else "Камень" if u_move == "ножницы" else "Ножницы"
+ elif level == 4:
+ stats = {"камень": Rock[uid], "ножницы": Scissors[uid], "бумага": Paper[uid]}
+ fav = max(stats, key=stats.get)
+ if fav == "камень": botans = "Бумага"
+ elif fav == "ножницы": botans = "Камень"
+ else: botans = "Ножницы"
+ else:
+ botans = random.choice(["Камень", "Ножницы", "Бумага"])
+
+ bot_move_low = botans.lower()
+ if bot_move_low == u_move:
+ bot.send_message(uid, "Мой ход: {botans}\nНичья!", reply_markup=keyboard)
+ draws[uid] += 1
+ elif (u_move == "камень" and bot_move_low == "ножницы") or \
+ (u_move == "ножницы" and bot_move_low == "бумага") or \
+ (u_move == "бумага" and bot_move_low == "камень"):
+ bot.send_message(uid, f"Мой ход: {botans}\nПобеда!", reply_markup=keyboard)
+ wins[uid] += 1
+ else:
+ bot.send_message(uid, f"Мой ход: {botans}\nПроиграл!", reply_markup=keyboard)
+ looses[uid] += 1
+
+bot.infinity_polling()
+
+# 1. if uid not in Rock/Paper/Scissors: создают персональный счетчик для каждого игрока, чтобы бот не путал статистику разных людей.
+#2. Rock[uid] += 1 (и аналоги): при каждом ходе пользователя бот «запоминает», какую кнопку вы нажали, прибавляя единицу к соответствующему счетчику.
+#3. stats = {"камень": Rock[uid]...}: перед своим ходом бот «смотрит» в вашу историю и собирает все ваши нажатия в одну таблицу.
+#4. max(stats, key=stats.get): бот вычисляет, какой ход в этой таблице встречается чаще всего.
+# 5. if fav == "камень": botans = "Бумага": бот делает ход, который побеждает ваш самый популярный вариант.
diff --git a/BotForTelegramm/test.json b/BotForTelegramm/test.json
new file mode 100644
index 0000000..496a6c6
--- /dev/null
+++ b/BotForTelegramm/test.json
@@ -0,0 +1,22 @@
+{
+ "first_name": "Name",
+ "last_name": "Surname",
+ "is_alive": true,
+ "age": 1000,
+ "address": {
+ "street": "street",
+ "city": "city",
+ "post": "100-100-100"
+ },
+ "phone_numbers": [
+ {
+ "type": "personal",
+ "number": "+7-(999)-999-99-99"
+ },
+ {
+ "type": "work",
+ "number": "+7-(999)-999-99-00"
+ }
+ ]
+ }
+}
\ No newline at end of file