Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.70 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")
  225. skin = skin.replace("st", r"StatTrak")
  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),headers={'User-Agent': 'Mozilla/5.0'})
  312. page = urllib.request.urlopen(req).read().decode('utf-8')
  313. jsonData = json.loads(page)
  314. try:
  315. if followTime >= 31:
  316. price = jsonData["result"]["items"]
  317. send_message(CHAN, 'The average price is %s USD( Keys) ' % price)
  318.  
  319. elif followTime <31:
  320. send_message(CHAN, "You haven't been following for 31 days")
  321. except KeyError:
  322. send_message(CHAN, "Invalid item name!")
  323. print("something went wrong1")
  324. except socket.error:
  325. print("something went wrong2")
  326. send_message(CHAN, "@%s -> %s is not a valid name." % (sender, skin))
  327. except UnicodeEncodeError:
  328. print("Something went wrong")
  329. send_message(CHAN, "Sorry something went wrong3")
  330.  
  331.  
  332. else:
  333. send_message(CHAN, "You must provide a skin name.")
  334.  
  335.  
  336. def command_steamprofile():
  337. global target
  338. msg = message[:-1].split(" ")
  339. cmd = msg[0].lower()
  340. if len(msg) >= 2:
  341. target = msg[1].strip("@").lower()
  342. else:
  343. target = sender
  344. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  345. jsonData = json.loads(page)
  346. steamid64 = jsonData["steam_id"]
  347. if steamid64:
  348. if target == sender:
  349. send_message(CHAN, "@%s -> Your steamprofile is https://steamcommunity.com/profiles/%s" % (sender,steamid64))
  350. else:
  351. send_message(CHAN, "@%s -> %s's steamidprofile is https://steamcommunity.com/profiles/%s" % (sender,target,steamid64))
  352. else:
  353. if target == sender:
  354. send_message(CHAN, "@%s -> Your steam account is not linked." % sender)
  355. else:
  356. send_message(CHAN, "@%s -> %s's Steam account is not linked." % (sender, target))
  357.  
  358.  
  359. def command_following():
  360. global target
  361. msg = message[:-1].split(" ")
  362. cmd = msg[0].lower()
  363. if len(msg) >= 2:
  364. target = msg[1].strip("@").lower()
  365. else:
  366. target = sender
  367.  
  368. page = urllib.request.urlopen(" https://apis.rtainc.co/twitchbot/following?channel=AerozzTV&user=%s" % target).read().decode("utf-8")
  369. if ("is not following" in page):
  370. if (target == sender):
  371. send_message(CHAN, "@%s -> You are not following" % sender)
  372. else:
  373. send_message(CHAN, "@%s -> %s is not following" % (sender,target))
  374. else:
  375.  
  376. if (target == sender):
  377. send_message(CHAN, "@%s -> you have been following for %s " % (sender,page))
  378. else:
  379. send_message(CHAN, "@%s -> %s Has been following for %s" % (sender,target,page))
  380.  
  381. def command_inventory():
  382. global target
  383. msg = message[:-1].split(" ")
  384. cmd = msg[0].lower()
  385. if len(msg) >= 2:
  386. target = msg[1].strip("@").lower()
  387. else:
  388. target = sender
  389. try:
  390. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  391. jsonData = json.loads(page)
  392. steamid64 = jsonData["steam_id"]
  393. if steamid64:
  394. req = urllib.request.Request("http://csgobackpack.net/api/GetInventoryValue/?id=%s" % steamid64, headers={'User-Agent': 'Mozilla/5.0'})
  395. page = urllib.request.urlopen(req).read().decode('utf-8-sig')
  396. jsonData = json.loads(page)
  397. price = jsonData["value"]
  398. if target == sender:
  399. send_message(CHAN,"@%s -> Your Inventory Value is: $%s" % (sender,price))
  400. else:
  401. send_message(CHAN,"@%s -> %s's Inventory Value is $%s" % (sender,target,price))
  402. else:
  403. if target == sender:
  404. send_message(CHAN,"@%s -> Your steam account must be linked to check your inventory value!" %sender)
  405. else:
  406. send_message(CHAN,"@%s -> %s's Steam account is not linked." %(sender, target))
  407. except socket.error:
  408. send_message(CHAN,"@%s -> That Twitch username seems to be invalid." % sender)
  409. print("something went wrong5")
  410. except KeyError:
  411. send_message(CHAN,"Something went wrong, please try again!")
  412. print("something went wrong6")
  413.  
  414. def command_inventoryhelp():
  415. global target
  416. msg = message[:-1].split(" ")
  417. cmd = msg[0].lower()
  418. if len(msg) >= 2:
  419. target = msg[1].strip("@").lower()
  420. else:
  421. target = sender
  422. try:
  423. if target == sender:
  424. send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %sender)
  425. else:
  426. send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %target)
  427. except socket.error:
  428. send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
  429. print("something went wrong7")
  430.  
  431.  
  432. def command_steamstate():
  433. global target
  434. msg = message[:-1].split(" ")
  435. cmd = msg[0].lower()
  436. if len(msg) >= 2:
  437. target = msg[1].strip("@").lower()
  438. else:
  439. target = sender
  440.  
  441. try:
  442. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  443. jsonData = json.loads(page)
  444. steamid64 = jsonData["steam_id"]
  445. if steamid64:
  446.  
  447. page = urllib.request.urlopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamid64).read().decode("utf-8")
  448. jsonData = json.loads(page)
  449. state = jsonData["response"]["players"][0]["personastate"]
  450. if target == sender:
  451. send_message(CHAN, "@%s -> Your steamstatus is %s" % sender,state)
  452. else:
  453. send_message(CHAN, "@%s -> %s's Steamstatus is %s" % sender,target,state)
  454. else:
  455. if target == sender:
  456.  
  457. send_message(CHAN, "@%s -> You are not linked" % sender)
  458. else:
  459. send_message(CHAN, "@%s -> %s's is not linked" % sender,target)
  460. except socket.error:
  461. send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
  462. print("something went wrong8")
  463. except TypeError:
  464. send_message(CHAN, "@%s -> You typed it wrong." %sender)
  465. print("something went wrong9")
  466.  
  467. def command_pricecurrency():
  468. global target
  469. msg = message[:-1].split(" ")
  470. cmd = msg[0].lower()
  471. if len(msg) >= 2:
  472. target = msg[1].strip("@").lower()
  473. else:
  474. target = sender
  475. try:
  476. if (target == sender):
  477. 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))
  478. else:
  479. 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))
  480. except socket.error:
  481. send_message(CHAN, "ERROR")
  482. print("something went wrong10")
  483.  
  484. def command_stats():
  485. global target
  486. msg = message[:-1].split(" ")
  487. if len(msg) >= 2:
  488. target = msg[1].strip("@").lower()
  489. else:
  490. target = sender
  491. try:
  492. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  493. jsonData = json.loads(page)
  494. steamID64 = jsonData["steam_id"]
  495. if steamID64:
  496. req = urllib.request.Request("http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=730&key=9C9530376816B36AEAE1129460042C41&steamid=%s" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  497. page = urllib.request.urlopen(req).read().decode('utf-8')
  498. jsonData = json.loads(page)
  499.  
  500. Stats = jsonData["playerstats"]["stats"]
  501.  
  502. for stat in Stats:
  503. if stat["name"] == "total_kills":
  504. Kills = int(stat["value"])
  505. elif stat["name"] == "total_deaths":
  506. Deaths = int(stat["value"])
  507. elif stat["name"] == "total_wins":
  508. Wins = int(stat["value"])
  509. if target == sender:
  510. send_message(CHAN, "@%s -> %s kills, %s deaths, %s wins" % (sender,Kills,Deaths,Wins))
  511. else:
  512. send_message(CHAN, "@%s -> %s %s Kills %s deaths %s wins" % (sender,target,Kills,Deaths,Wins))
  513. except socket.error:
  514. send_message(CHAN, "Wrong name")
  515. print("something went wrong11")
  516.  
  517. def command_games():
  518. global target
  519. msg = message[:-1].split(" ")
  520. if len(msg) >= 2:
  521. target = msg[1].strip("@").lower()
  522. else:
  523. target = sender
  524. try:
  525. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  526. jsonData = json.loads(page)
  527. steamID64 = jsonData["steam_id"]
  528. if steamID64:
  529. req = urllib.request.Request("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=9C9530376816B36AEAE1129460042C41&steamid=%s&format=json" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  530. page = urllib.request.urlopen(req).read().decode('utf-8')
  531. jsonData = json.loads(page)
  532.  
  533. GameCount = jsonData["response"]["game_count"]
  534.  
  535.  
  536. if target == sender:
  537. send_message(CHAN, "@%s -> You have %s games owned" %(sender,GameCount))
  538. else:
  539. send_message(CHAN, "@%s -> %s has %s games owned" %(sender,target,GameCount))
  540. except socket.error:
  541. send_message(CHAN, "Wrong Twitch Username.")
  542. print("something went wrong12")
  543.  
  544. def command_followcount():
  545. global target
  546. msg = message[:-1].split(" ")
  547. cmd = msg[0].lower()
  548. if len(msg) >= 2:
  549. target = msg[1].strip("@").lower()
  550. else:
  551. target = sender
  552.  
  553. try:
  554. page = urllib.request.urlopen("https://api.rtainc.co/twitch/followers/count?channel=%s" % target).read().decode("utf-8")
  555. if("<br />" in page):
  556. send_message(CHAN, "@%s -> Wrong twitch username" % sender)
  557. else:
  558. send_message(CHAN, "@%s -> Currently there are %s people following %s" % (sender,page,target))
  559. except socket.error:
  560. send_message(CHAN, "Wrong twitch username")
  561. print("something went wrong13")
  562.  
  563.  
  564.  
  565. def command_add():
  566. global target
  567. msg = message[:-1].split(" ")
  568. cmd = msg[0].lower()
  569. if len(msg) >= 2:
  570. target = msg[1].strip("@").lower()
  571.  
  572. try:
  573.  
  574. file = open("evildog255/ideas.txt", "a")
  575. file.write(target + "\n")
  576. file.close()
  577. send_message(CHAN, "%s added" % target)
  578. except socket.error:
  579. send_message(CHAN, "something went wrong!")
  580. print("something went wrong14")
  581.  
  582. def command_remove():
  583. permissions = ["evildog255"]
  584. global target
  585. msg = message[:-1].split(" ")
  586. cmd = msg[0].lower()
  587. if len(msg) >= 2:
  588. target = msg[1].strip("@").lower()
  589.  
  590. try:
  591. if sender in permissions:
  592. file = open("evildog255/ideas.txt", 'w').close()
  593. send_message(CHAN, "list cleared!")
  594. else:
  595. send_message(CHAN, "NO PERMISSION")
  596. except socket.error:
  597. send_message(CHAN, "something went wrong!")
  598. print("something went wrong15")
  599.  
  600. def command_say():
  601. permissions = ["evildog255"]
  602. global target
  603. msg = message[:-1].split(" ")
  604. cmd = msg[0].lower()
  605. if len(msg) >= 2:
  606. target = msg[1].strip("@").lower()
  607.  
  608. try:
  609. if sender in permissions:
  610. send_message(CHAN, " ".join(msg[1:]))
  611. else:
  612. send_message(CHAN, "not allowed to do that!")
  613. except socket.error:
  614. send_message(CHAN, "Something went wrong!")
  615. print("something went wrong16")
  616.  
  617.  
  618. def command_vaccheck():
  619. global target
  620. msg = message[:-1].split(" ")
  621. if len(msg) >= 2:
  622. target = msg[1].strip("@").lower()
  623. else:
  624. target = sender
  625. try:
  626. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % quote(target)).read().decode("utf-8")
  627. jsonData = json.loads(page)
  628. steamID64 = jsonData["steam_id"]
  629. if steamID64:
  630. req = urllib.request.Request("http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamID64 ,headers={'User-Agent': 'Mozilla/5.0'})
  631. page = urllib.request.urlopen(req).read().decode('utf-8')
  632. jsonData = json.loads(page)
  633.  
  634. vacban = jsonData["players"][0]["VACBanned"]
  635. vacbans = jsonData["players"][0]["NumberOfVACBans"]
  636. days = jsonData["players"][0]["DaysSinceLastBan"]
  637.  
  638.  
  639. if target == sender and vacban is True:
  640. send_message(CHAN, "@%s -> You have %s VAC'(s) on record, Days since last ban: %s Days" %(sender,vacbans,days))
  641. else:
  642. if(vacban is True):
  643. send_message(CHAN, "@%s -> %s has %s VAC'(s) on record, Days since last ban: %s Days" %(sender,target,vacbans,days))
  644. else:
  645. if(target == sender and vacban is False):
  646. send_message(CHAN, "@%s -> You have no VAC's on record" % sender)
  647. else:
  648. if(vacban is False):
  649. send_message(CHAN, "@%s -> %s has no VAC's on record" % (sender,target))
  650. else:
  651. if target == sender:
  652. send_message(CHAN, "@%s -> You aren't linked (Does this means he's hiding a vac?!?! Kappa )" % sender)
  653. else:
  654. send_message(CHAN, "@%s -> %s isn't linked (Does this means he's hiding a vac ?!?! Kappa )" % (sender,target))
  655.  
  656.  
  657. except socket.error:
  658. send_message(CHAN, "Wrong Twitch Username.")
  659. print("something went wrong12")
  660.  
  661. def command_viewers():
  662. try:
  663. channel = "aerozztv"
  664. modCounter = 0
  665. viewerCounter = 0
  666. page = urllib.request.urlopen("https://tmi.twitch.tv/group/user/%s/chatters" % channel).read().decode("utf-8")
  667. jsonData = json.loads(page)
  668. for user in jsonData["chatters"]["viewers"]:
  669. viewerCounter +=1
  670. for user in jsonData["chatters"]["moderators"]:
  671. modCounter +=1
  672.  
  673. send_message(CHAN, "Currently there are %s plebs watching and %s moderators" % (viewerCounter, modCounter))
  674.  
  675. except socket.error:
  676. send_message(CHAN, "Something went wrong Error code 2020202")
  677. print("Error code 2020202")
  678.  
  679. def command_pricehelp():
  680. global target
  681. msg = message[:-1].split(" ")
  682. if len(msg) >=2:
  683. target = message[1].strip("@").lower()
  684. else:
  685. target = sender
  686. try:
  687. if target == sender:
  688. send_message(CHAN, "@%s -> This searches for a item in CSGOBACKPACK Api and gives you the average price and keys, for example: !price (Currency) ak vulcan fn will Give you The average price is (price)(Currency)(Keys), Default currency is USD, Check !pricecurrency for all currencies" % sender)
  689. else:
  690. send_message(CHAN, "@%s -> This searches for a item in CSGOBACKPACK Api and gives you the average price and keys, for example: !price (Currency) ak vulcan fn will Give you The average price is (price)(Currency)(Keys), Default currency is USD, Check !pricecurrency for all currencies" % target)
  691.  
  692. except socket.error:
  693. send_message(CHAN, "Wrong twitch username")
  694. print("Something went wrong 69")
  695.  
  696. def command_subtest():
  697. global target
  698. msg = message[:-1].split(" ")
  699.  
  700. if len(msg) >=2:
  701. target = message[1].strip("@").lower()
  702. else:
  703. target = sender
  704. try:
  705. if target == sender and modStatus is True:
  706. send_message(CHAN, "You are mod!")
  707. else:
  708. send_message(CHAN, "wat")
  709. except socket.error:
  710. send_message(CHAN, "cba to write something here")
  711.  
  712. def command_greetings():
  713. global target
  714. msg = message[:-1].split(" ")
  715. if len(msg) >=2:
  716. target = message[1].strip("@").lower()
  717. else:
  718. target = sender
  719. try:
  720. now = date.today()
  721. page = urllib.request.urlopen("https://api.twitch.tv/kraken/users/%s/follows/channels/aerozztv" % sender).read().decode("utf-8")
  722. jsonData = json.loads(page)
  723. followed = jsonData["created_at"].split("T")[0].split("-")
  724. followed = date(int(followed[0]), int(followed[1]), int(followed[2]))
  725. followTime = (now - followed).days
  726. except socket.error:
  727. send_message(CHAN, "You haven't been following for 31 days")
  728. print("%s hasn't been following for 31 days" % target)
  729. try:
  730. channel = "aerozztv"
  731. page = urllib.request.urlopen("https://tmi.twitch.tv/group/user/%s/chatters" % channel).read().decode("utf-8")
  732. jsonData = json.loads(page)
  733. viewers = ["chatters"]["viewers"]
  734. mods = ["chatters"]["moderators"]
  735. if target == sender and target in viewers and followTime <5:
  736. send_message(CHAN, "hello %s" %sender)
  737. elif target in viewers and followTime <5:
  738. send_message(CHAN, "hello %s" %target)
  739. if target == sender and target in mods:
  740. send_message(CHAN, "Say hello to the almighty mod %s" %sender)
  741. elif target in mods:
  742. send_message(CHAN, "Say hello to the almighty mod %s" % target)
  743. else:
  744. send_message(CHAN, "not supported!")
  745.  
  746. except socket.error:
  747. send_message(CHAN, "Wrong twitch username")
  748. print("greetings error")
  749.  
  750. def command_nametest():
  751. global target
  752. msg = message[:-1].split(" ")
  753. cmd = msg[0].lower()
  754. if len(msg) >= 2:
  755. target = msg[1].strip("@").lower()
  756. else:
  757. target = sender
  758.  
  759. try:
  760. page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
  761. jsonData = json.loads(page)
  762. steamid64 = jsonData["steam_id"]
  763. if steamid64:
  764.  
  765. page = urllib.request.urlopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamid64).read().decode("utf-8")
  766. jsonData = json.loads(page)
  767. name = jsonData["response"]["players"][0]["personaname"]
  768. if "aerozztv" in name.lower():
  769. send_message(CHAN, "You have Aerozztv in your steam name %s" % name)
  770. else:
  771. send_message(CHAN, "You don't have Aerozztv in your steam name %s" % name)
  772. except socket.error:
  773. send_message(CHAN, "Wrong twitch username")
  774.  
  775. def command_addcom():
  776. global ecmdf
  777. if modStatus is True:
  778. msg = message[:-1].split(" ")
  779. if len(msg) >= 3:
  780. addComName = msg[1]
  781. addComResponse = " ".join(msg[2:])
  782. ecmdf[addComName] = addComResponse
  783. with open("commands.json", "w") as data_file:
  784. json.dump(ecmdf, data_file)
  785. send_message(CHAN, "'%s' added." % addComName)
  786. else:
  787. send_message(CHAN, "Insufficient parameters.")
  788. else:
  789. send_message(CHAN, "You don't have permission to use this command.")
  790.  
  791. def command_delcom():
  792. global ecmdf
  793. if modStatus is True:
  794. msg = message[:-1].split(" ")
  795. if len(msg) >= 2:
  796. comName = msg[1]
  797. try:
  798. del ecmdf[comName]
  799. with open("commands.json", "w") as data_file:
  800. json.dump(ecmdf, data_file)
  801. send_message(CHAN, "'%s' has been deleted." % comName)
  802. except KeyError:
  803. send_message(CHAN, "This command does not exist.")
  804. else:
  805. send_message(CHAN, "Insufficient parameters.")
  806. else:
  807. send_message(CHAN, "You do not have permission to use this command.")
  808.  
  809. def command_disable():
  810. global off
  811. if modStatus is True:
  812. msg = message[:-1].split(" ")
  813. if len(msg) >= 2:
  814. addComDisable = msg[1]
  815. off[addComDisable] = addComDisable
  816. with open("disabledcommands.json", "w") as command_off:
  817. json.dump(off, command_off)
  818. send_message(CHAN, "'%s' disabled" % addComDisable)
  819. else:
  820. send_message(CHAN, "insufficient parameter.")
  821. else:
  822. send_message(CHAN, "no permissions!")
  823.  
  824. def command_optest():
  825. global target
  826. msg = message[:-1].split(" ")
  827. cmd = msg[0].lower()
  828. if len(msg) >= 2:
  829. target = msg[1].strip("@").lower()
  830. else:
  831. target = sender
  832. try:
  833. page = urllib.request.urlopen("https://opskins.com/api/user_api.php?request=test&key=f187f3f2f78e986acc305eb294c26430").read().decode("utf-8")
  834. jsonData = json.loads(page)
  835. succes = jsonData["success"]
  836. if succes:
  837. if succes == "200":
  838. send_message(CHAN, "test completed")
  839. else:
  840. send_message(CHAN, "error hype?")
  841. except socket.error:
  842. send_message(CHAN, "something went wrong!")
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850. # --------------------------------------------- End Command Functions ----------------------------------------------
  851.  
  852. con = socket.socket()
  853.  
  854. con.connect((HOST, PORT))
  855.  
  856.  
  857. send_pass(PASS)
  858. send_nick(NICK)
  859. con.send(bytes('CAP REQ :twitch.tv/tags\r\n', 'UTF-8'))
  860. join_channel(CHAN)
  861.  
  862. data = ""
  863. while True:
  864. try:
  865. ready = select.select([con], [], [], 8)
  866. if ready[0]:
  867. data = con.recv(1024).decode("UTF-8")
  868. print(data)
  869. if len(data) != 0:
  870. data_split = re.split(r"[~\r\n+]", data)
  871. data = data_split.pop()
  872. for line in data_split:
  873. line = str.rstrip(line)
  874. line = str.split(line)
  875. lineInfo = line[0].split(";")
  876. lineDict = {}
  877. for info in lineInfo:
  878. newInfo = info.split("=")
  879. lineDict[newInfo[0]] = newInfo[1]
  880. modStatus = int(lineDict["mod"])
  881. turboStatus = int(lineDict["turbo"])
  882. subStatus = int(lineDict["subscriber"])
  883. if turboStatus == 1:
  884. turboStatus = True
  885. if subStatus == 1:
  886. subStatus = True
  887. if modStatus == 1:
  888. modStatus = True
  889. if turboStatus == 0:
  890. turboStatus = False
  891. if modStatus == 0:
  892. modStatus = False
  893. if subStatus == 0:
  894. subStatus = False
  895. if len(line) >= 1:
  896. if line[0] == "PING":
  897. send_pong(line[1])
  898. print("Pong!")
  899. if line[2] == "PRIVMSG":
  900. sender = get_sender(line[1]).lower()
  901. message = get_message(line[1:])
  902. parse_message(message)
  903. except socket.error:
  904. print("[WARNING]\tSocket died.")
  905. except socket.timeout:
  906. print("[WARNING]\tSocket timeout.")
  907. except IndexError:
  908. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement