Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2016
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.75 KB | None | 0 0
  1. import re
  2. import socket
  3. import json
  4. import urllib.request
  5. from datetime import date
  6. from datetime import datetime
  7. from urllib.parse import quote
  8. import select
  9.  
  10. with open("commands.json", "a") as data_file:
  11. pass
  12. with open("commands.json", "r+") as data_file:
  13. try:
  14. ecmdf = json.load(data_file)
  15. except ValueError:
  16. print("Commands file corrupt or does not exist. Creating a new one...")
  17. if data_file != "":
  18. nowTime = datetime.now().strftime("%Y-%m-%d %H;%M;%S")
  19. backupFN = "commands-%s.json.bak" % nowTime
  20. with open(backupFN, "w") as backupFile:
  21. data_file.seek(0)
  22. backupFile.write(data_file.read())
  23. print("A backup of your previous 'commands.json' file has been saved as '%s'." % backupFN)
  24. data_file.seek(0)
  25. data_file.truncate()
  26. json.dump({}, data_file)
  27. print("Commands file created.\n")
  28. data_file.seek(0)
  29. ecmdf = json.load(data_file)
  30.  
  31. with open("disabledcommands.json", "a") as command_off:
  32. pass
  33. with open("disabledcommands.json", "r+") as command_off:
  34. try:
  35. off = json.load(command_off)
  36. except ValueError:
  37. print("File does not exist")
  38. if command_off != "":
  39. nowTime = datetime.now().strftime("%Y-%m-%d %H;%M;%S")
  40. BackupFN = "commandsoff-%s.json.bak" % nowTime
  41. with open(BackupFN, "w") as backupFILE:
  42. command_off.seek(0)
  43. backupFILE.write(command_off.read())
  44. print("Backup created as '%s'." % BackupFN)
  45. command_off.seek(0)
  46. command_off.truncate()
  47. json.dump({}, command_off)
  48. print("commandsoff file created.\n")
  49. command_off.seek(0)
  50. off = json.load(command_off)
  51. if msg in command_off:
  52. pass
  53.  
  54.  
  55. # --------------------------------------------- Start Settings ----------------------------------------------------
  56. HOST = "irc.twitch.tv" # Hostname of the IRC-Server in this case twitch's
  57. PORT = 6667 # Default IRC-Port
  58. CHAN = "#aerozztv" # Channelname = #{Nickname}
  59. NICK = "Evilbot254" # Nickname = Twitch username
  60. CHECK = 'CAP REQ :twitch.tv/tags'
  61. PASS = "oauth:y93pv2z5ii0usy6538esd30fc2gdr3" # www.twitchapps.com/tmi/ will help to retrieve the required authkey
  62. # --------------------------------------------- End Settings -------------------------------------------------------
  63.  
  64.  
  65. # --------------------------------------------- Start Functions ----------------------------------------------------
  66. def send_pong(msg):
  67. con.send(bytes('PONG %s\r\n' % msg, 'UTF-8'))
  68.  
  69.  
  70. def send_message(chan, msg):
  71. con.send(bytes('PRIVMSG %s :%s\r\n' % (chan, msg), 'UTF-8'))
  72.  
  73.  
  74. def send_nick(nick):
  75. con.send(bytes('NICK %s\r\n' % nick, 'UTF-8'))
  76.  
  77.  
  78. def send_pass(password):
  79. con.send(bytes('PASS %s\r\n' % password, 'UTF-8'))
  80.  
  81.  
  82. def join_channel(chan):
  83. con.send(bytes('JOIN %s\r\n' % chan, 'UTF-8'))
  84.  
  85. def check_user(check):
  86. con.send(bytes('CHECK %s\r\n' % check, 'UTF-8'))
  87.  
  88.  
  89. def part_channel(chan):
  90. con.send(bytes('PART %s\r\n' % chan, 'UTF-8'))
  91. # --------------------------------------------- End Functions ------------------------------------------------------
  92.  
  93.  
  94. # --------------------------------------------- Start Helper Functions ---------------------------------------------
  95. def get_sender(msg):
  96. result = ""
  97. for char in msg:
  98. if char == "!":
  99. break
  100. if char != ":":
  101. result += char
  102. return result
  103.  
  104.  
  105. def get_message(msg):
  106. result = ""
  107. i = 3
  108. length = len(msg)
  109. while i < length:
  110. result += msg[i] + " "
  111. i += 1
  112. result = result.lstrip(':')
  113. return result
  114.  
  115.  
  116. def parse_message(msg):
  117. if len(msg) >= 1:
  118. msg = msg.split(' ')
  119. options = {'!test': command_test,
  120. '!hello': command_hello,
  121. '!price': command_price,
  122. '!steamprofile': command_steamprofile,
  123. '!steamid64': command_testing,
  124. '!followingsince': command_following,
  125. '!inventoryprice': command_inventory,
  126. '!inventoryhelp': command_inventoryhelp,
  127. '!steamstate': command_steamstate,
  128. '!inventory': command_inventory,
  129. '!inv' : command_inventory,
  130. '!pricecurrency': command_pricecurrency,
  131. '!stats': command_stats,
  132. '!games': command_games,
  133. '!commandadd': command_add,
  134. '!followcount' : command_followcount,
  135. '!commandsremove' : command_remove,
  136. '!pricehelp' : command_pricehelp,
  137. '!vaccheck' : command_vaccheck,
  138. '!watching' : command_viewers,
  139. '!greet' : command_greetings,
  140. '!namecheck' : command_nametest,
  141. '!evildisable' : command_disable,
  142. '!subcheck' : command_subtest,
  143. '!eviladd': command_addcom,
  144. '!optest' : command_optest,
  145. '!evildel' : command_delcom,
  146. '!evilsay' : command_say}
  147. if msg[0] in options:
  148. options[msg[0]]()
  149. # --------------------------------------------- End Helper Functions -----------------------------------------------
  150.  
  151.  
  152. # --------------------------------------------- Start Command Functions --------------------------------------------
  153. def command_test():
  154. page = urllib.request.urlopen("https://tmi.twitch.tv/group/user/aerozztv/chatters").read().decode("utf-8")
  155. jsonData = json.loads(page)
  156. moderators = jsonData["chatters"]["moderators"]
  157. viewers = jsonData["chatters"]["viewers"]
  158. if sender in moderators:
  159. send_message(CHAN, 'testing some stuff')
  160. else:
  161. send_message(CHAN, "only mods can do this")
  162.  
  163. def command_hello():
  164. send_message(CHAN, 'Hello my name is evilbot254')
  165.  
  166. def back_apiError():
  167. send_message(CHAN, "@%s -> This bot sucks please try again later." % sender)
  168.  
  169. def command_testing():
  170. global target
  171. msg = message[:-1].split(" ")
  172. cmd = msg[0].lower()
  173. if len(msg) >= 2:
  174. target = msg[1].strip("@").lower()
  175. else:
  176. target = sender
  177. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  178. jsonData = json.loads(page)
  179. steamid64 = jsonData["steam_id"]
  180. if steamid64:
  181. if target == sender:
  182. send_message(CHAN, "@%s -> Your steamid64 is %s" % (sender,steamid64))
  183. else:
  184. send_message(CHAN, "@%s -> %s's steamid64 is %s" % (sender,target,steamid64))
  185. else:
  186. if target == sender:
  187. send_message(CHAN, "@%s -> Your steam account is not linked." % sender)
  188. else:
  189. send_message(CHAN, "@%s -> %s's Steam account is not linked." % (sender, target))
  190.  
  191. def command_price():
  192. validCurrencies = ["GBP", "USD", "SEK", "EUR", "RUB", "INR", "AUD", "CAD", "SGD", "CHF", "MYR", "JPY", "CNY", "DKK", "BRL", "NZD", "HKD", "TRY", "CHF"]
  193.  
  194. global target
  195. msg = message[:-1].split(" ")
  196. cmd = msg[0].lower()
  197. if len(msg) >= 2:
  198. if msg[1] in validCurrencies:
  199. currency = msg[1].upper()
  200. target = msg[2:]
  201. elif msg[1] == "st":
  202. target = msg[2:]
  203. currency = "USD"
  204. else:
  205. currency = "USD"
  206. target = msg[1:]
  207.  
  208.  
  209. try:
  210. now = date.today()
  211. page = urllib.request.urlopen("https://api.twitch.tv/kraken/users/%s/follows/channels/aerozztv" % sender).read().decode("utf-8")
  212. jsonData = json.loads(page)
  213. followed = jsonData["created_at"].split("T")[0].split("-")
  214. followed = date(int(followed[0]), int(followed[1]), int(followed[2]))
  215. followTime = (now - followed).days
  216. except socket.error:
  217. send_message(CHAN, "You haven't been following for 31 days")
  218. print("%s hasn't been following for 31 days" % target)
  219. skin = ""
  220. for word in target:
  221. skin = skin + word + " "
  222. skin = skin[:-1]
  223. skin = skin.replace(" ", "%20")
  224. skin = skin.replace("stattrak", r"StatTrak" + "\u2122")
  225. skin = skin.replace("s", "S")
  226. skin = skin.replace("ft", r"(Field-Tested)")
  227. skin = skin.replace("bS", r"(Battle-Scarred)")
  228. skin = skin.replace("fn", r"(Factory%20New)")
  229. skin = skin.replace("ww", r"(Well-Worn)")
  230. skin = skin.replace("mw", r"(Minimal%20Wear)")
  231. skin = skin.replace("ak", r"Ak-47%20|")
  232. skin = skin.replace("m4a1", r"M4A1-S%20|")
  233. skin = skin.replace("m4a1-s", r"M4A1-S%20|")
  234. skin = skin.replace("usp", r"USP-S%20|")
  235. skin = skin.replace("p2k", r"P2000%20|")
  236. skin = skin.replace("awp", r"AWP%20|")
  237. skin = skin.replace("cz", r"CZ75-Auto%20|")
  238. skin = skin.replace("dual", r"Dual%20Berettas%20|")
  239. skin = skin.replace("pp-bison", r"PP-Bison%20|")
  240. skin = skin.replace("p250", r"P250%20|")
  241. skin = skin.replace("aug", r"AUG%20|")
  242. skin = skin.replace("ump", r"UMP-45%20|")
  243. skin = skin.replace("galil", r"Galil AR%20|")
  244. skin = skin.replace("ssg", r"SSG 08%20|")
  245. skin = skin.replace("tec9", r"Tec-9%20|")
  246. skin = skin.replace("xm", r"XM1014%20|")
  247. skin = skin.replace("g3", r"G3SG1%20|")
  248. skin = skin.replace("m249", r"M249%20|")
  249. skin = skin.replace("mp9", r"MP9%20|")
  250. skin = skin.replace("sawedoff", r"Sawed-Off%20|")
  251. skin = skin.replace("sawed", r"Sawed-Off%20|")
  252. skin = skin.replace("sg", r"SG 553%20|")
  253. skin = skin.replace("awp", r"AWP%20|")
  254. skin = skin.replace("glock", r"Glock-18%20|")
  255. skin = skin.replace("desert", r"Desert Eagle%20|")
  256. skin = skin.replace("r8", r"R8 Revolver%20|")
  257. skin = skin.replace("revolver", r"R8 Revolver%20|")
  258. skin = skin.replace("nova", r"Nova%20|")
  259. skin = skin.replace("mag7", r"MAG-7%20|")
  260. skin = skin.replace("swag7", r"MAG-7%20|")
  261. skin = skin.replace("mac10", r"MAC-10%20|")
  262. skin = skin.replace("mp7", r"MP7%20|")
  263. skin = skin.replace("p90", r"P90%20|")
  264. skin = skin.replace("pro90", r"P90%20|")
  265. skin = skin.replace("mp9", r"MP9%20|")
  266. skin = skin.replace("m4a4", r"M4A4%20|")
  267. skin = skin.replace("scar", r"SCAR-20%20|")
  268. skin = skin.replace("scar20", r"SCAR-20%20")
  269. skin = skin.replace("vanillabayonet", r"★ Bayonet")
  270. skin = skin.replace("vanillabutterfly", r"★ Butterfly Knife")
  271. skin = skin.replace("vanillafalchion", r"★ Falchion Knife")
  272. skin = skin.replace("vanillaflip", r"★ Flip Knife")
  273. skin = skin.replace("vanillagut", r"★ Gut Knife")
  274. skin = skin.replace("vanillahuntsman", r"★ Huntsman Knife")
  275. skin = skin.replace("vanillakarambit", r"★ Karambit")
  276. skin = skin.replace("vanillam9", r"★ M9 Bayonet")
  277. skin = skin.replace("vanillashadow", r"★ Shadow Daggers")
  278. skin = skin.replace("vanillabowie", r"★ Bowie Knife")
  279. skin = skin.replace("vanillabuttplugs", r"★ Shadow Daggers")
  280. skin = skin.replace("vanillashadowdaggers",r"★ Shadow Daggers")
  281. skin = skin.replace("vanillam9bayonet", r"★ M9 Bayonet")
  282. skin = skin.replace("vanillabowieknife", r"★ Bowie Knife")
  283. skin = skin.replace("bayonet", r"★ Bayonet%20|")
  284. skin = skin.replace("butterfly", r"★ Butterfly Knife%20|")
  285. skin = skin.replace("falchion", r"★ Falchion Knife%20|")
  286. skin = skin.replace("flip", r"★ Flip Knife%20|")
  287. skin = skin.replace("gut", r"★ Gut Knife%20|")
  288. skin = skin.replace("huntsman", r"★ Huntsman Knife%20|")
  289. skin = skin.replace("karambit", r"★ Karambit%20|")
  290. skin = skin.replace("m9", r"★ M9 Bayonet%20|")
  291. skin = skin.replace("shadow", r"★ Shadow Daggers%20|")
  292. skin = skin.replace("bowie", r"★ Bowie Knife%20|")
  293. skin = skin.replace("buttplugs", r"★ Shadow Daggers%20|")
  294. skin = skin.replace("shadowdaggers",r"★ Shadow Daggers%20|")
  295. skin = skin.replace("m9bayonet", r"★ M9 Bayonet%20|")
  296. skin = skin.replace("bowieknife", r"★ Bowie Knife%20|")
  297. skin = skin.replace("chanticofire", r"Chantico's Fire")
  298. skin = skin.replace("goldencoil", r"Golden Coil")
  299. skin = skin.replace("hyperbeast", r"Hyper Beast")
  300. skin = skin.replace("alloy", r"Atomic Alloy")
  301. skin = skin.replace("hotrod", r"Hot Rod")
  302. skin = skin.replace("masterpiece", r"Master Piece")
  303. skin = skin.replace("brightwater", r"Bright Water")
  304. skin = skin.replace("darkwater", r"Dark Water")
  305. skin = skin.replace("icarusfell", r"Icarus Fell")
  306. skin = skin.replace("bloodtiger", r"Blood Tiger")
  307. skin = skin.replace("borealforest", r"Boreal Forest")
  308. skin = skin.replace("hyperbeast", r"Hyper Beast")
  309.  
  310. try:
  311. req = urllib.request.Request("https://opskins.com/api/user_api.php?request=GetLowestSalePrices&key=f187f3f2f78e986acc305eb294c26430&appid=730&contextid=2&names=%s" % quote(skin).replace("25", "").replace("%28", "(").replace("%29", ")").replace("A2", "T").replace("%84%", "S").replace("StatTrAk-47%20%7C%E2", "").replace("%E2", "★").replace("%98", "").replace("%85", ""),headers={'User-Agent': 'Mozilla/5.0'})
  312. page = urllib.request.urlopen(req).read().decode('utf-8')
  313. jsonData = json.loads(page)
  314. price = jsonData["result"]["items"][quote(skin).replace("%20", " ")]
  315. realcost = float(int(price)/100)
  316. keyCost = int(float(realcost)/2.7)
  317.  
  318. print("https://opskins.com/api/user_api.php?request=GetLowestSalePrices&key=f187f3f2f78e986acc305eb294c26430&appid=730&contextid=2&names=%s" % quote(skin).replace("25", "").replace("%28", "(").replace("%29", ")").replace("A2", "T").replace("%84%", "S").replace("StatTrAk-47%20%7C%E2", "").replace("%E2", "★").replace("%98", "").replace("%85", ""))
  319. print(page)
  320. try:
  321. if followTime >= 31 and keyCost > 1 or keyCost == 0:
  322. send_message(CHAN, 'The lowest price is %s USD(%s Keys) ' % (realcost,keyCost))
  323.  
  324.  
  325. elif followTime <31:
  326. send_message(CHAN, "You haven't been following for 31 days")
  327.  
  328. else:
  329. send_message(CHAN, 'The lowest price is %s USD(%s Key)' % (realcost,keyCost))
  330. except KeyError:
  331. send_message(CHAN, "Invalid item name!")
  332. print("something went wrong1")
  333. except socket.error:
  334. print("something went wrong2")
  335. send_message(CHAN, "@%s -> %s is not a valid name." % (sender, skin))
  336. except UnicodeEncodeError:
  337. print("Something went wrong")
  338. send_message(CHAN, "Since we updated to OPSKINS API the knives and stattrak are currently unavailable")
  339. except TypeError:
  340. pass
  341. except UnboundLocalError:
  342. pass
  343.  
  344.  
  345. else:
  346. send_message(CHAN, "You must provide a skin name.")
  347.  
  348.  
  349. def command_steamprofile():
  350. global target
  351. msg = message[:-1].split(" ")
  352. cmd = msg[0].lower()
  353. if len(msg) >= 2:
  354. target = msg[1].strip("@").lower()
  355. else:
  356. target = sender
  357. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  358. jsonData = json.loads(page)
  359. steamid64 = jsonData["steam_id"]
  360. if steamid64:
  361. if target == sender:
  362. send_message(CHAN, "@%s -> Your steamprofile is https://steamcommunity.com/profiles/%s" % (sender,steamid64))
  363. else:
  364. send_message(CHAN, "@%s -> %s's steamidprofile is https://steamcommunity.com/profiles/%s" % (sender,target,steamid64))
  365. else:
  366. if target == sender:
  367. send_message(CHAN, "@%s -> Your steam account is not linked." % sender)
  368. else:
  369. send_message(CHAN, "@%s -> %s's Steam account is not linked." % (sender, target))
  370.  
  371.  
  372. def command_following():
  373. global target
  374. msg = message[:-1].split(" ")
  375. cmd = msg[0].lower()
  376. if len(msg) >= 2:
  377. target = msg[1].strip("@").lower()
  378. else:
  379. target = sender
  380.  
  381. page = urllib.request.urlopen(" https://apis.rtainc.co/twitchbot/following?channel=AerozzTV&user=%s" % target).read().decode("utf-8")
  382. if ("is not following" in page):
  383. if (target == sender):
  384. send_message(CHAN, "@%s -> You are not following" % sender)
  385. else:
  386. send_message(CHAN, "@%s -> %s is not following" % (sender,target))
  387. else:
  388.  
  389. if (target == sender):
  390. send_message(CHAN, "@%s -> you have been following for %s " % (sender,page))
  391. else:
  392. send_message(CHAN, "@%s -> %s Has been following for %s" % (sender,target,page))
  393.  
  394. def command_inventory():
  395. global target
  396. msg = message[:-1].split(" ")
  397. cmd = msg[0].lower()
  398. if len(msg) >= 2:
  399. target = msg[1].strip("@").lower()
  400. else:
  401. target = sender
  402. try:
  403. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  404. jsonData = json.loads(page)
  405. steamid64 = jsonData["steam_id"]
  406. if steamid64:
  407. req = urllib.request.Request("http://csgobackpack.net/api/GetInventoryValue/?id=%s" % steamid64, headers={'User-Agent': 'Mozilla/5.0'})
  408. page = urllib.request.urlopen(req).read().decode('utf-8-sig')
  409. jsonData = json.loads(page)
  410. price = jsonData["value"]
  411. if target == sender:
  412. send_message(CHAN,"@%s -> Your Inventory Value is: $%s" % (sender,price))
  413. else:
  414. send_message(CHAN,"@%s -> %s's Inventory Value is $%s" % (sender,target,price))
  415. else:
  416. if target == sender:
  417. send_message(CHAN,"@%s -> Your steam account must be linked to check your inventory value!" %sender)
  418. else:
  419. send_message(CHAN,"@%s -> %s's Steam account is not linked." %(sender, target))
  420. except socket.error:
  421. send_message(CHAN,"@%s -> That Twitch username seems to be invalid." % sender)
  422. print("something went wrong5")
  423. except KeyError:
  424. send_message(CHAN,"Something went wrong, please try again!")
  425. print("something went wrong6")
  426.  
  427. def command_inventoryhelp():
  428. global target
  429. msg = message[:-1].split(" ")
  430. cmd = msg[0].lower()
  431. if len(msg) >= 2:
  432. target = msg[1].strip("@").lower()
  433. else:
  434. target = sender
  435. try:
  436. if target == sender:
  437. send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %sender)
  438. else:
  439. send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %target)
  440. except socket.error:
  441. send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
  442. print("something went wrong7")
  443.  
  444.  
  445. def command_steamstate():
  446. global target
  447. msg = message[:-1].split(" ")
  448. cmd = msg[0].lower()
  449. if len(msg) >= 2:
  450. target = msg[1].strip("@").lower()
  451. else:
  452. target = sender
  453.  
  454. try:
  455. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  456. jsonData = json.loads(page)
  457. steamid64 = jsonData["steam_id"]
  458. if steamid64:
  459.  
  460. page = urllib.request.urlopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamid64).read().decode("utf-8")
  461. jsonData = json.loads(page)
  462. state = jsonData["response"]["players"][0]["personastate"]
  463. if target == sender:
  464. send_message(CHAN, "@%s -> Your steamstatus is %s" % sender,state)
  465. else:
  466. send_message(CHAN, "@%s -> %s's Steamstatus is %s" % sender,target,state)
  467. else:
  468. if target == sender:
  469.  
  470. send_message(CHAN, "@%s -> You are not linked" % sender)
  471. else:
  472. send_message(CHAN, "@%s -> %s's is not linked" % sender,target)
  473. except socket.error:
  474. send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
  475. print("something went wrong8")
  476. except TypeError:
  477. send_message(CHAN, "@%s -> You typed it wrong." %sender)
  478. print("something went wrong9")
  479.  
  480. def command_pricecurrency():
  481. global target
  482. msg = message[:-1].split(" ")
  483. cmd = msg[0].lower()
  484. if len(msg) >= 2:
  485. target = msg[1].strip("@").lower()
  486. else:
  487. target = sender
  488. try:
  489. if (target == sender):
  490. send_message(CHAN, "@%s -> Currently there is GBP, USD, SEK, EUR, RUB, INR, AUD, CAD, SGD, CHF, MYR, JPY, CNY, DKK, BRL, NZD, HKD, TRY. (18)" %(sender))
  491. else:
  492. send_message(CHAN, "@%s -> Currently there is GBP, USD, SEK, EUR, RUB, INR, AUD, CAD, SGD, CHF, MYR, JPY, CNY, DKK, BRL, NZD, HKD, TRY. (18)" %(target))
  493. except socket.error:
  494. send_message(CHAN, "ERROR")
  495. print("something went wrong10")
  496.  
  497. def command_stats():
  498. global target
  499. msg = message[:-1].split(" ")
  500. if len(msg) >= 2:
  501. target = msg[1].strip("@").lower()
  502. else:
  503. target = sender
  504. try:
  505. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  506. jsonData = json.loads(page)
  507. steamID64 = jsonData["steam_id"]
  508. if steamID64:
  509. req = urllib.request.Request("http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=730&key=9C9530376816B36AEAE1129460042C41&steamid=%s" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  510. page = urllib.request.urlopen(req).read().decode('utf-8')
  511. jsonData = json.loads(page)
  512.  
  513. Stats = jsonData["playerstats"]["stats"]
  514.  
  515. for stat in Stats:
  516. if stat["name"] == "total_kills":
  517. Kills = int(stat["value"])
  518. elif stat["name"] == "total_deaths":
  519. Deaths = int(stat["value"])
  520. elif stat["name"] == "total_wins":
  521. Wins = int(stat["value"])
  522. if target == sender:
  523. send_message(CHAN, "@%s -> %s kills, %s deaths, %s wins" % (sender,Kills,Deaths,Wins))
  524. else:
  525. send_message(CHAN, "@%s -> %s %s Kills %s deaths %s wins" % (sender,target,Kills,Deaths,Wins))
  526. except socket.error:
  527. send_message(CHAN, "Wrong name")
  528. print("something went wrong11")
  529.  
  530. def command_games():
  531. global target
  532. msg = message[:-1].split(" ")
  533. if len(msg) >= 2:
  534. target = msg[1].strip("@").lower()
  535. else:
  536. target = sender
  537. try:
  538. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  539. jsonData = json.loads(page)
  540. steamID64 = jsonData["steam_id"]
  541. if steamID64:
  542. req = urllib.request.Request("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=9C9530376816B36AEAE1129460042C41&steamid=%s&format=json" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  543. page = urllib.request.urlopen(req).read().decode('utf-8')
  544. jsonData = json.loads(page)
  545.  
  546. GameCount = jsonData["response"]["game_count"]
  547.  
  548.  
  549. if target == sender:
  550. send_message(CHAN, "@%s -> You have %s games owned" %(sender,GameCount))
  551. else:
  552. send_message(CHAN, "@%s -> %s has %s games owned" %(sender,target,GameCount))
  553. except socket.error:
  554. send_message(CHAN, "Wrong Twitch Username.")
  555. print("something went wrong12")
  556.  
  557. def command_followcount():
  558. global target
  559. msg = message[:-1].split(" ")
  560. cmd = msg[0].lower()
  561. if len(msg) >= 2:
  562. target = msg[1].strip("@").lower()
  563. else:
  564. target = sender
  565.  
  566. try:
  567. page = urllib.request.urlopen("https://api.rtainc.co/twitch/followers/count?channel=%s" % target).read().decode("utf-8")
  568. if("<br />" in page):
  569. send_message(CHAN, "@%s -> Wrong twitch username" % sender)
  570. else:
  571. send_message(CHAN, "@%s -> Currently there are %s people following %s" % (sender,page,target))
  572. except socket.error:
  573. send_message(CHAN, "Wrong twitch username")
  574. print("something went wrong13")
  575.  
  576.  
  577.  
  578. def command_add():
  579. global target
  580. msg = message[:-1].split(" ")
  581. cmd = msg[0].lower()
  582. if len(msg) >= 2:
  583. target = msg[1].strip("@").lower()
  584.  
  585. try:
  586.  
  587. file = open("evildog255/ideas.txt", "a")
  588. file.write(target + "\n")
  589. file.close()
  590. send_message(CHAN, "%s added" % target)
  591. except socket.error:
  592. send_message(CHAN, "something went wrong!")
  593. print("something went wrong14")
  594.  
  595. def command_remove():
  596. permissions = ["evildog255"]
  597. global target
  598. msg = message[:-1].split(" ")
  599. cmd = msg[0].lower()
  600. if len(msg) >= 2:
  601. target = msg[1].strip("@").lower()
  602.  
  603. try:
  604. if sender in permissions:
  605. file = open("evildog255/ideas.txt", 'w').close()
  606. send_message(CHAN, "list cleared!")
  607. else:
  608. send_message(CHAN, "NO PERMISSION")
  609. except socket.error:
  610. send_message(CHAN, "something went wrong!")
  611. print("something went wrong15")
  612.  
  613. def command_say():
  614. permissions = ["evildog255"]
  615. global target
  616. msg = message[:-1].split(" ")
  617. cmd = msg[0].lower()
  618. if len(msg) >= 2:
  619. target = msg[1].strip("@").lower()
  620.  
  621. try:
  622. if sender in permissions:
  623. send_message(CHAN, " ".join(msg[1:]))
  624. else:
  625. send_message(CHAN, "not allowed to do that!")
  626. except socket.error:
  627. send_message(CHAN, "Something went wrong!")
  628. print("something went wrong16")
  629.  
  630.  
  631. def command_vaccheck():
  632. global target
  633. msg = message[:-1].split(" ")
  634. if len(msg) >= 2:
  635. target = msg[1].strip("@").lower()
  636. else:
  637. target = sender
  638. try:
  639. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % quote(target)).read().decode("utf-8")
  640. jsonData = json.loads(page)
  641. steamID64 = jsonData["steam_id"]
  642. if steamID64:
  643. req = urllib.request.Request("http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  644. page = urllib.request.urlopen(req).read().decode('utf-8')
  645. jsonData = json.loads(page)
  646.  
  647. vacban = jsonData["players"][0]["VACBanned"]
  648. vacbans = jsonData["players"][0]["NumberOfVACBans"]
  649. days = jsonData["players"][0]["DaysSinceLastBan"]
  650.  
  651.  
  652. if target == sender and vacban is True:
  653. send_message(CHAN, "@%s -> You have %s VAC'(s) on record, Days since last ban: %s Days" %(sender,vacbans,days))
  654. else:
  655. if(vacban is True):
  656. send_message(CHAN, "@%s -> %s has %s VAC'(s) on record, Days since last ban: %s Days" %(sender,target,vacbans,days))
  657. else:
  658. if(target == sender and vacban is False):
  659. send_message(CHAN, "@%s -> You have no VAC's on record" % sender)
  660. else:
  661. if(vacban is False):
  662. send_message(CHAN, "@%s -> %s has no VAC's on record" % (sender,target))
  663. else:
  664. if target == sender:
  665. send_message(CHAN, "@%s -> You aren't linked (Does this means he's hiding a vac?!?! Kappa )" % sender)
  666. else:
  667. send_message(CHAN, "@%s -> %s isn't linked (Does this means he's hiding a vac ?!?! Kappa )" % (sender,target))
  668.  
  669.  
  670. except socket.error:
  671. send_message(CHAN, "Wrong Twitch Username.")
  672. print("something went wrong12")
  673.  
  674. def command_viewers():
  675. try:
  676. channel = "aerozztv"
  677. modCounter = 0
  678. viewerCounter = 0
  679. page = urllib.request.urlopen("https://tmi.twitch.tv/group/user/%s/chatters" % channel).read().decode("utf-8")
  680. jsonData = json.loads(page)
  681. for user in jsonData["chatters"]["viewers"]:
  682. viewerCounter +=1
  683. for user in jsonData["chatters"]["moderators"]:
  684. modCounter +=1
  685.  
  686. send_message(CHAN, "Currently there are %s plebs watching and %s moderators" % (viewerCounter, modCounter))
  687.  
  688. except socket.error:
  689. send_message(CHAN, "Something went wrong Error code 2020202")
  690. print("Error code 2020202")
  691.  
  692. def command_pricehelp():
  693. global target
  694. msg = message[:-1].split(" ")
  695. if len(msg) >=2:
  696. target = message[1].strip("@").lower()
  697. else:
  698. target = sender
  699. try:
  700. if target == sender:
  701. send_message(CHAN, "@%s -> This searches for a item of your choice in OPSKINS and gives you the lowest price and keys, for example: !price ak vulcan fn will give you the lowest price is (price)USD(Keys) Only currency that works is USD, Thanks to Aerozztv for letting me use his API code " % sender)
  702. else:
  703. send_message(CHAN, "@%s -> This searches for a item of your choice in OPSKINS and gives you the lowest price and keys, for example: !price ak vulcan fn will give you the lowest price is (price)USD(Keys) Only currency that works is USD, Thanks to Aerozztv for letting me use his API code" % target)
  704.  
  705. except socket.error:
  706. send_message(CHAN, "Wrong twitch username")
  707. print("Something went wrong 69")
  708.  
  709. def command_subtest():
  710. global target
  711. msg = message[:-1].split(" ")
  712.  
  713. if len(msg) >=2:
  714. target = message[1].strip("@").lower()
  715. else:
  716. target = sender
  717. try:
  718. if target == sender and modStatus is True:
  719. send_message(CHAN, "You are mod!")
  720. else:
  721. send_message(CHAN, "wat")
  722. except socket.error:
  723. send_message(CHAN, "cba to write something here")
  724.  
  725. def command_greetings():
  726. global target
  727. msg = message[:-1].split(" ")
  728. if len(msg) >=2:
  729. target = message[1].strip("@").lower()
  730. else:
  731. target = sender
  732. try:
  733. now = date.today()
  734. page = urllib.request.urlopen("https://api.twitch.tv/kraken/users/%s/follows/channels/aerozztv" % sender).read().decode("utf-8")
  735. jsonData = json.loads(page)
  736. followed = jsonData["created_at"].split("T")[0].split("-")
  737. followed = date(int(followed[0]), int(followed[1]), int(followed[2]))
  738. followTime = (now - followed).days
  739. except socket.error:
  740. send_message(CHAN, "You haven't been following for 31 days")
  741. print("%s hasn't been following for 31 days" % target)
  742. try:
  743. channel = "aerozztv"
  744. page = urllib.request.urlopen("https://tmi.twitch.tv/group/user/%s/chatters" % channel).read().decode("utf-8")
  745. jsonData = json.loads(page)
  746. viewers = ["chatters"]["viewers"]
  747. mods = ["chatters"]["moderators"]
  748. if target == sender and target in viewers and followTime <5:
  749. send_message(CHAN, "hello %s" %sender)
  750. elif target in viewers and followTime <5:
  751. send_message(CHAN, "hello %s" %target)
  752. if target == sender and target in mods:
  753. send_message(CHAN, "Say hello to the almighty mod %s" %sender)
  754. elif target in mods:
  755. send_message(CHAN, "Say hello to the almighty mod %s" % target)
  756. else:
  757. send_message(CHAN, "not supported!")
  758.  
  759. except socket.error:
  760. send_message(CHAN, "Wrong twitch username")
  761. print("greetings error")
  762.  
  763. def command_nametest():
  764. global target
  765. msg = message[:-1].split(" ")
  766. cmd = msg[0].lower()
  767. if len(msg) >= 2:
  768. target = msg[1].strip("@").lower()
  769. else:
  770. target = sender
  771.  
  772. try:
  773. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  774. jsonData = json.loads(page)
  775. steamid64 = jsonData["steam_id"]
  776. if steamid64:
  777.  
  778. page = urllib.request.urlopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamid64).read().decode("utf-8")
  779. jsonData = json.loads(page)
  780. name = jsonData["response"]["players"][0]["personaname"]
  781. if "aerozztv" in name.lower():
  782. send_message(CHAN, "You have Aerozztv in your steam name %s" % name)
  783. else:
  784. send_message(CHAN, "You don't have Aerozztv in your steam name %s" % name)
  785. except socket.error:
  786. send_message(CHAN, "Wrong twitch username")
  787.  
  788. def command_addcom():
  789. global ecmdf
  790. if modStatus is True:
  791. msg = message[:-1].split(" ")
  792. if len(msg) >= 3:
  793. addComName = msg[1]
  794. addComResponse = " ".join(msg[2:])
  795. ecmdf[addComName] = addComResponse
  796. with open("commands.json", "w") as data_file:
  797. json.dump(ecmdf, data_file)
  798. send_message(CHAN, "'%s' added." % addComName)
  799. else:
  800. send_message(CHAN, "Insufficient parameters.")
  801. else:
  802. send_message(CHAN, "You don't have permission to use this command.")
  803.  
  804. def command_delcom():
  805. global ecmdf
  806. if modStatus is True:
  807. msg = message[:-1].split(" ")
  808. if len(msg) >= 2:
  809. comName = msg[1]
  810. try:
  811. del ecmdf[comName]
  812. with open("commands.json", "w") as data_file:
  813. json.dump(ecmdf, data_file)
  814. send_message(CHAN, "'%s' has been deleted." % comName)
  815. except KeyError:
  816. send_message(CHAN, "This command does not exist.")
  817. else:
  818. send_message(CHAN, "Insufficient parameters.")
  819. else:
  820. send_message(CHAN, "You do not have permission to use this command.")
  821.  
  822. def command_disable():
  823. global off
  824. if modStatus is True:
  825. msg = message[:-1].split(" ")
  826. if len(msg) >= 2:
  827. addComDisable = msg[1]
  828. off[addComDisable] = addComDisable
  829. with open("disabledcommands.json", "w") as command_off:
  830. json.dump(off, command_off)
  831. send_message(CHAN, "'%s' disabled" % addComDisable)
  832. else:
  833. send_message(CHAN, "insufficient parameter.")
  834. else:
  835. send_message(CHAN, "no permissions!")
  836.  
  837. def command_optest():
  838. global target
  839. msg = message[:-1].split(" ")
  840. cmd = msg[0].lower()
  841. if len(msg) >= 2:
  842. target = msg[1].strip("@").lower()
  843. else:
  844. target = sender
  845. try:
  846. page = urllib.request.urlopen("https://opskins.com/api/user_api.php?request=test&key=f187f3f2f78e986acc305eb294c26430").read().decode("utf-8")
  847. jsonData = json.loads(page)
  848. succes = jsonData["success"]
  849. if succes:
  850. if succes == "200":
  851. send_message(CHAN, "test completed")
  852. else:
  853. send_message(CHAN, "error hype?")
  854. except socket.error:
  855. send_message(CHAN, "something went wrong!")
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863. # --------------------------------------------- End Command Functions ----------------------------------------------
  864.  
  865. con = socket.socket()
  866.  
  867. con.connect((HOST, PORT))
  868.  
  869.  
  870. send_pass(PASS)
  871. send_nick(NICK)
  872. con.send(bytes('CAP REQ :twitch.tv/tags\r\n', 'UTF-8'))
  873. join_channel(CHAN)
  874.  
  875. data = ""
  876. while True:
  877. try:
  878. ready = select.select([con], [], [], 8)
  879. if ready[0]:
  880. data = con.recv(1024).decode("UTF-8")
  881. print(data)
  882. if len(data) != 0:
  883. data_split = re.split(r"[~\r\n+]", data)
  884. data = data_split.pop()
  885. for line in data_split:
  886. line = str.rstrip(line)
  887. line = str.split(line)
  888. lineInfo = line[0].split(";")
  889. lineDict = {}
  890. for info in lineInfo:
  891. newInfo = info.split("=")
  892. lineDict[newInfo[0]] = newInfo[1]
  893. modStatus = int(lineDict["mod"])
  894. turboStatus = int(lineDict["turbo"])
  895. subStatus = int(lineDict["subscriber"])
  896. if turboStatus == 1:
  897. turboStatus = True
  898. if subStatus == 1:
  899. subStatus = True
  900. if modStatus == 1:
  901. modStatus = True
  902. if turboStatus == 0:
  903. turboStatus = False
  904. if modStatus == 0:
  905. modStatus = False
  906. if subStatus == 0:
  907. subStatus = False
  908. if len(line) >= 1:
  909. if line[0] == "PING":
  910. send_pong(line[1])
  911. print("Pong!")
  912. if line[2] == "PRIVMSG":
  913. sender = get_sender(line[1]).lower()
  914. message = get_message(line[1:])
  915. parse_message(message)
  916. except socket.error:
  917. print("[WARNING]\tSocket died.")
  918. except socket.timeout:
  919. print("[WARNING]\tSocket timeout.")
  920. except IndexError:
  921. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement