Advertisement
Alexquickdraw

Chatango bot Claim function

Dec 26th, 2016
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.64 KB | None | 0 0
  1. '''
  2. Chatango bot claim feature
  3. By Hardware@chatango
  4. '''
  5.  
  6. #Claim user
  7. def claimuser(user, claim):
  8.     claimed = [] #User that has been claimed
  9.     masters = [] #Masters
  10.     user = user.lower()
  11.     claim = claim.lower()
  12.     with open("claims.json") as f:
  13.         data = json.loads(f.read())
  14.         if claim == user: return user.title()+", you cannot claim yourself <.<"
  15.         for ms, clu in data.items(): #Prevents you from claiming your owner
  16.             if user in clu  and ms == claim: return "<b>"+user.title()+"</b>, you cannot claim your master."
  17.         for u, c in data.items():
  18.             for x in c:
  19.                 claimed.append(x) #adds all claimed user to a list
  20.         if claim in claimed: #Check if user is already claimed.
  21.             for ma, cl in data.items(): #Loop again to get master name
  22.                 if claim in cl:
  23.                     return "@"+claim.capitalize()+" has already been claimed by: <b>"+ma.title()+"</b>."
  24.         elif claim not in claimed:# if not claimed
  25.             for mas, claims in data.items():
  26.                 masters.append(mas)
  27.             if user in masters: #If master in db
  28.                 data[user].append(claim)
  29.                 with open("claims.json", "w") as file:
  30.                     file.write(json.dumps(data))
  31.                 return "@"+claim.title()+" has been claimed by <b>"+user.title()+". ♥"
  32.             elif user not in masters: #Else write new entry and apply claim
  33.                 data[user] = [claim]
  34.                 with open("claims.json", "w") as filer:
  35.                     filer.write(json.dumps(data))
  36.                 return "@"+claim.title()+" has been claimed by <b>"+user.title()+". ♥"
  37.    
  38. #Release claimed user
  39. def releaseclaim(user, claim):
  40.     user = user.lower()
  41.     claim = claim.lower()
  42.     with open("claims.json") as f:
  43.         data = json.loads(f.read())
  44.         try:
  45.             if claim in data[user]:
  46.                 data[user].remove(claim)
  47.                 with open("claims.json", "w") as file:
  48.                     file.write(json.dumps(data))
  49.                     return "<b>"+user.title()+"</b>, you've released: @"+claim.title()
  50.             else: return "<b>"+user.title()+"</b>, you're not the master of <b>"+claim.title()+"</b>..."
  51.         except: return "<b>"+user.title()+"</b>, you're not the master of <b>"+claim.title()+"</b>..."
  52.  
  53. #List your claims
  54. def myclaims(user):
  55.     user = user.lower()
  56.     masters = []
  57.     with open("claims.json") as f:
  58.         data = json.loads(f.read())
  59.         for u, c in data.items(): masters.append(u)
  60.         if user in masters and len(data[user])>0:
  61.             return "<b>"+user.title()+"'s</b> claimed users("+str(len(data[user]))+"): "+", ".join(data[user]).title()
  62.         else: return "<b>"+user.title()+"</b>, you have no claimed users.."
  63.  
  64. #Steal claims(by using gold)
  65. #This function is only needed if you use my mining system.
  66. #remove it otherwise.        
  67. def stealclaim(user, claim):
  68.     claims = []
  69.     masters = []
  70.     claim = claim.lower()
  71.     with open("claims.json") as f:
  72.         data = json.loads(f.read())
  73.         for k, v in data.items():
  74.             masters.append(k)
  75.             if user in v and claim == k: return "You cannot claim your owner."
  76.             if k == user and claim in v: return "<b>"+user.capitalize()+"</b>, you're already the owner of @"+claim.capitalize()+"."
  77.             for x in v:
  78.                 claims.append(x)
  79.         if claim in claims:
  80.             for key, val in data.items():
  81.                 if claim in val:
  82.                     if int(itemdb(user, "gold"))>=250:
  83.                         gold, silver, copper, iron,  diamond, emerald, amethyst, sapphire, topaz, ruby, rock, wood, dirt, sand, grass, bones = json.loads(mines[user])
  84.                         gold =  int(gold) - int(250)
  85.                         mines[user] = json.dumps([gold, silver, copper, iron,  diamond, emerald, amethyst, sapphire, topaz, ruby, rock, wood, dirt, sand, grass, bones])
  86.                         val.remove(claim)
  87.                         if user not in masters:
  88.                             data[user] = [claim]
  89.                             with open("claims.json","w") as fk:
  90.                                  fk.write(json.dumps(data))
  91.                                  return "<b>"+user.title()+"</b> you've stolen @"+claim.capitalize()+" from @" +key.capitalize()+" for 250 <f x10ffff00=\"1\">Gold<f x808080=\"0\">."
  92.                                
  93.                         else:
  94.                              data[user].append(claim)
  95.                              with open("claims.json","w") as fk:
  96.                                  fk.write(json.dumps(data))
  97.                                  return "<b>"+user.title()+"</b> you've stolen @"+claim.capitalize()+" from @" +key.capitalize()+" for 250 <f x10ffff00=\"1\">Gold<f x808080=\"0\">."
  98.                     else: return "<b>"+user.title()+"</b>, you do not have enough <f x11ffff00=\"1\">Gold<f x808080=\"0\">  to steal any claims. (Requires: 250 <f x11ffff00=\"1\">Gold<f x808080=\"0\">)"          
  99.         else: return "<b>"+claim.capitalize()+"</b> has not been claimed by anyone yet."
  100.  
  101. #My owner(claims)
  102. def myowner(user):
  103.     c = []
  104.     with open("claims.json") as f:
  105.         data = json.loads(f.read())
  106.         for master, claims in data.items():
  107.             if user in claims:
  108.                 for x in claims: c.append(x)
  109.         if user in c:
  110.             for ms, us in data.items():
  111.                 if user in us:
  112.                     return "<b>"+user.title()+"</b>, your owner is: <b>"+ms.title()+"</b>."
  113.         else: return "<b>"+user.title()+", you have no owner.."
  114.  
  115.  
  116. ######Claim CMDS########
  117.  
  118.  
  119.         #Claim user
  120.         elif used_prefix and cmd == "claim":
  121.             users = []
  122.             for x in room._userlist:
  123.                 item = re.sub('(<User: |>)', '', str(x))
  124.                 users.append(item)                          
  125.             if len(args) == 0: return room.message("Claim who?")
  126.             if " " in args: return room.message("There is a space in the name, please try again.")
  127.             if args.lower() in users:
  128.                room.message(claimuser(user.name, args.lower()), True)
  129.             else: room.message("<b>"+user.name.title()+"</b>, you cannot claim a user that isn't in the room.", True)
  130.  
  131.        #Release claime user.                
  132.         elif used_prefix and cmd == "release":
  133.             room.message(releaseclaim(user.name, args.lower()), True)
  134.            
  135.         #My claimed users.
  136.         elif used_prefix and cmd == "myclaims":
  137.             room.message(myclaims(user.name), True)
  138.  
  139.        #Steal claim (costs 250 gold) (only needed if you have my mining system)
  140.         elif used_prefix and cmd == "stealclaim":
  141.             users = []
  142.             for x in room._userlist:
  143.                 item = re.sub('(<User: |>)', '', str(x))
  144.                 users.append(item)
  145.             if user.name not in mines: return room.message("<f x808080=\"0\">You need 250 <f x10ffff00=\"1\">Gold<f x808080=\"0\"> to steal claims. do /Register -> /mine", True) #makes sure it's a miner
  146.             if args.lower() == user.name: return room.message("<f x808080=\"0\">You cannot claim yourself.", True) #cant steal yourself
  147.             if len(args) == 0: return room.message("Steal who?") #Makes sure args >0
  148.             if " " in args: return room.message("There is a space in the name, please try again.", True)#prevents names with spaes
  149.             if args.lower() in users: #can only claim users in the room.
  150.                room.message(stealclaim(user.name, args.lower()), True)
  151.             else: room.message("<b>"+user.name.title()+"</b>, you cannot claim a user that isn't in the room.", True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement