Advertisement
Fsoky

vk_api BOT with MongoDB | nobody

Apr 11th, 2021
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.08 KB | None | 0 0
  1. import vk_api
  2. from vk_api.longpoll import VkLongPoll, VkEventType
  3. from vk_api.keyboard import VkKeyboard, VkKeyboardColor
  4. from pymongo import MongoClient
  5. from random import randint, choice
  6.  
  7. session = vk_api.VkApi(token="token")
  8. cluster = MongoClient("link on connect")
  9. collection = cluster.testdb.testcoll
  10.  
  11.  
  12. def send_message(user_id, message, keyboard=None):
  13.     post = {
  14.         "user_id": user_id,
  15.         "message": message,
  16.         "random_id": 0
  17.     }
  18.  
  19.     if keyboard != None:
  20.         post["keyboard"] = keyboard.get_keyboard()
  21.     else:
  22.         post = post
  23.  
  24.     session.method("messages.send", post)
  25.  
  26.  
  27. def menu(user_id):
  28.     keyboard = VkKeyboard(one_time=True)
  29.     buttons = ["๐Ÿฅ‘ account", "๐Ÿช shop", "๐Ÿฉ work"]
  30.     buttons_color = [VkKeyboardColor.POSITIVE, VkKeyboardColor.DEFAULT, VkKeyboardColor.PRIMARY]
  31.  
  32.     if collection.count_documents({"_id": user_id}) != 0:
  33.         buttons = buttons
  34.         buttons_color = buttons_color
  35.  
  36.     for button, button_color in zip(buttons, buttons_color):
  37.         keyboard.add_button(button.title(), color=button_color)
  38.  
  39.     if collection.count_documents({"_id": user_id}) == 0:
  40.         keyboard.add_line()
  41.         keyboard.add_button("Registration", color=VkKeyboardColor.NEGATIVE)
  42.  
  43.     return keyboard
  44.  
  45.  
  46. for event in VkLongPoll(session).listen():
  47.     if event.type == VkEventType.MESSAGE_NEW and event.to_me:
  48.         user_id = event.user_id
  49.         text = event.text.lower()
  50.  
  51.         if text == "menu":
  52.             send_message(user_id, "Hello, unknown user, choice an action", menu(user_id))
  53.         elif text == "๐Ÿฅ‘ account":
  54.             if collection.count_documents({"_id": user_id}) == 0:
  55.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  56.             else:
  57.                 keyboard = VkKeyboard()
  58.                 keyboard.add_button("Back", color=VkKeyboardColor.NEGATIVE)
  59.  
  60.                 account = collection.find_one({"_id": user_id})
  61.                 hearts = "โค๏ธ ๐Ÿงก ๐Ÿ’› ๐Ÿ’š ๐Ÿ’™ ๐Ÿ’œ ๐Ÿ–ค ๐Ÿค".split(" ")
  62.                 conclusion = f"""
  63.                 {choice(hearts)} ID: {account["_id"]}
  64.                 ๐Ÿ’ฐ Balance: {account["balance"]}
  65.                 โšฐ๏ธ Wood: {account["items"]["wood"]}
  66.                 ๐Ÿงฑ Stone: {account["items"]["stone"]}
  67.                 """
  68.  
  69.                 send_message(user_id, conclusion, menu(user_id)) # Here the problems...
  70.         elif text == "registration":
  71.             if collection.count_documents({"_id": user_id}) == 0:
  72.                 post = {
  73.                     "_id": user_id,
  74.                     "balance": 1000,
  75.                     "xp": 0,
  76.                     "items": {
  77.                         "wood": 0,
  78.                         "stone": 0
  79.                     }
  80.                 }
  81.                 collection.insert_one(post)
  82.  
  83.                 send_message(user_id, "You were successfully added to the system", menu(user_id))
  84.             else:
  85.                 send_message(user_id, "You already registered in the system!", menu(user_id))
  86.         elif text == "๐Ÿฉ work":
  87.             if collection.count_documents({"_id": user_id}) == 0:
  88.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  89.             else:
  90.                 keyboard = VkKeyboard()
  91.                 buttons = ["earn", "back"]
  92.                 buttons_color = [VkKeyboardColor.PRIMARY, VkKeyboardColor.NEGATIVE]
  93.  
  94.                 for button, button_color in zip(buttons, buttons_color):
  95.                     keyboard.add_button(button.title(), color=button_color)
  96.  
  97.                 send_message(user_id, "Choice an action", keyboard)
  98.         elif text == "earn":
  99.             if collection.count_documents({"_id": user_id}) == 0:
  100.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  101.             else:
  102.                 income = randint(100, 1000)
  103.                 collection.update_one({"_id": user_id}, {"$inc": {"balance": income}})
  104.  
  105.             send_message(user_id, f"You are successfully earned {income}")
  106.         elif text == "back":
  107.             send_message(user_id, "Choice an action", menu(user_id))
  108.         elif text == "๐Ÿช shop":
  109.             if collection.count_documents({"_id": user_id}) == 0:
  110.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  111.             else:
  112.                 keyboard = VkKeyboard()
  113.                 buttons = ["wood", "stone"]
  114.  
  115.                 for button in buttons:
  116.                     keyboard.add_button(button.title())
  117.                 keyboard.add_line()
  118.                 keyboard.add_button("Back", color=VkKeyboardColor.NEGATIVE)
  119.  
  120.                 send_message(user_id, "Wood - 100 ๐Ÿ’ต\nStone - 100 ๐Ÿ’ต", keyboard)
  121.         elif text == "wood":
  122.             if collection.count_documents({"_id": user_id}) == 0:
  123.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  124.             else:
  125.                 balance = collection.find_one({"_id": user_id})["balance"]
  126.                 if balance <= 0:
  127.                     send_message(user_id, "Insufficient funds", menu(user_id))
  128.                 elif balance < 100:
  129.                     send_message(user_id, "Insufficient funds", menu(user_id))
  130.                 else:
  131.                     collection.update_one({"_id": user_id}, {"$inc": {"items.wood": 1, "balance": -100}})
  132.                     send_message(user_id, "You are successfully bought product")
  133.         elif text == "stone":
  134.             if collection.count_documents({"_id": user_id}) == 0:
  135.                 send_message(user_id, "You are not registered in the system...", menu(user_id))
  136.             else:
  137.                 balance = collection.find_one({"_id": user_id})["balance"]
  138.                 if balance <= 0:
  139.                     send_message(user_id, "Insufficient funds", menu(user_id))
  140.                 elif balance < 100:
  141.                     send_message(user_id, "Insufficient funds", menu(user_id))
  142.                 else:
  143.                     collection.update_one({"_id": user_id}, {"$inc": {"items.stone": 1, "balance": -100}})
  144.                     send_message(user_id, "You are successfully bought product")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement