Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import socket
- import json
- import urllib.request
- from urllib.parse import quote
- # --------------------------------------------- Start Settings ----------------------------------------------------
- HOST = "irc.twitch.tv" # Hostname of the IRC-Server in this case twitch's
- PORT = 6667 # Default IRC-Port
- CHAN = "#aerozztv" # Channelname = #{Nickname}
- NICK = "Evilbot254" # Nickname = Twitch username
- PASS = "oauth:y93pv2z5ii0usy6538esd30fc2gdr3" # www.twitchapps.com/tmi/ will help to retrieve the required authkey
- # --------------------------------------------- End Settings -------------------------------------------------------
- # --------------------------------------------- Start Functions ----------------------------------------------------
- def send_pong(msg):
- con.send(bytes('PONG %s\r\n' % msg, 'UTF-8'))
- def send_message(chan, msg):
- con.send(bytes('PRIVMSG %s :%s\r\n' % (chan, msg), 'UTF-8'))
- def send_nick(nick):
- con.send(bytes('NICK %s\r\n' % nick, 'UTF-8'))
- def send_pass(password):
- con.send(bytes('PASS %s\r\n' % password, 'UTF-8'))
- def join_channel(chan):
- con.send(bytes('JOIN %s\r\n' % chan, 'UTF-8'))
- def part_channel(chan):
- con.send(bytes('PART %s\r\n' % chan, 'UTF-8'))
- # --------------------------------------------- End Functions ------------------------------------------------------
- # --------------------------------------------- Start Helper Functions ---------------------------------------------
- def get_sender(msg):
- result = ""
- for char in msg:
- if char == "!":
- break
- if char != ":":
- result += char
- return result
- def get_message(msg):
- result = ""
- i = 3
- length = len(msg)
- while i < length:
- result += msg[i] + " "
- i += 1
- result = result.lstrip(':')
- return result
- def parse_message(msg):
- if len(msg) >= 1:
- msg = msg.split(' ')
- options = {'!test': command_test,
- '!hello': command_hello,
- '!price': command_price,
- '!steamprofile': command_steamprofile,
- '!steamid64': command_testing,
- '!followingsince': command_following,
- '!inventoryprice': command_inventory,
- '!inventoryhelp': command_inventoryhelp,
- '!steamstate': command_steamstate,
- '!inventory': command_inventory,
- '!lastmatch': command_lastmatch,
- '!pricecurrency': command_pricecurrency,
- '!asdf': command_asdf}
- if msg[0] in options:
- options[msg[0]]()
- # --------------------------------------------- End Helper Functions -----------------------------------------------
- # --------------------------------------------- Start Command Functions --------------------------------------------
- def command_test():
- send_message(CHAN, 'testing some stuff')
- def command_hello():
- send_message(CHAN, 'Hello my name is evilbot254')
- def back_apiError():
- send_message(CHAN, "@%s -> This bot sucks please try again later." % sender)
- def command_testing():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
- jsonData = json.loads(page)
- steamid64 = jsonData["steam_id"]
- if steamid64:
- if target == sender:
- send_message(CHAN, "@%s -> Your steamid64 is %s" % (sender,steamid64))
- else:
- send_message(CHAN, "@%s -> %s's steamid64 is %s" % (sender,target,steamid64))
- else:
- if target == sender:
- send_message(CHAN, "@%s -> Your steam account is not linked." % sender)
- else:
- send_message(CHAN, "@%s -> %s's Steam account is not linked." % (sender, target))
- def command_price():
- validCurrencies = ["GBP", "USD", "SEK", "EUR", "RUB"]
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- currency = msg[1].upper()
- target = msg[2:]
- skin = ""
- for word in target:
- skin = skin + word + " "
- skin = skin[:-1]
- skin = skin.replace(" ", "%20")
- skin = skin.replace("stattrak", "StatTrak")
- skin = skin.replace("ft", r"(Field-Tested)")
- skin = skin.replace("bs", r"(Battle-Scarred)")
- skin = skin.replace("fn", r"(Factory%20New)")
- skin = skin.replace("ww", r"(Well-Worn)")
- skin = skin.replace("mw", r"(Minimal%20Wear)")
- skin = skin.replace("ak", r"Ak-47%20|")
- skin = skin.replace("m4a1", r"M4A1-S%20|")
- skin = skin.replace("usp", r"USP-S%20|")
- skin = skin.replace("p2k", r"P2000%20|")
- skin = skin.replace("cz", r"CZ75-Auto%20|")
- skin = skin.replace("dual", r"Dual%20Berettas%20|")
- skin = skin.replace("pp-bison", r"PP-Bison%20|")
- skin = skin.replace("p250", r"P250%20|")
- skin = skin.replace("aug", r"AUG%20|")
- skin = skin.replace("ump", r"UMP-45%20|")
- skin = skin.replace("galil", r"Galil AR%20|")
- skin = skin.replace("ssg", r"SSG 08%20|")
- skin = skin.replace("tec9", r"Tec-9%20|")
- skin = skin.replace("xm", r"XM1014%20|")
- skin = skin.replace("g3", r"G3SG1%20|")
- skin = skin.replace("m249", r"M249%20|")
- skin = skin.replace("mp9", r"MP9%20|")
- skin = skin.replace("sawedoff", r"Sawed-Off%20|")
- skin = skin.replace("sawed", r"Sawed-Off%20|")
- skin = skin.replace("sg", r"SG 553%20|")
- skin = skin.replace("awp", r"AWP%20|")
- skin = skin.replace("glock", r"Glock-18%20|")
- skin = skin.replace("desert", r"Desert Eagle%20|")
- skin = skin.replace("r8", r"R8 Revolver%20|")
- skin = skin.replace("revolver", r"R8 Revolver%20|")
- skin = skin.replace("nova", r"Nova%20|")
- skin = skin.replace("mag7", r"MAG-7%20|")
- skin = skin.replace("swag7", r"MAG-7%20|")
- skin = skin.replace("mac10", r"MAC-10%20|")
- skin = skin.replace("mp7", r"MP7%20|")
- skin = skin.replace("p90", r"P90%20|")
- skin = skin.replace("pro90", r"P90%20|")
- skin = skin.replace("mp9", r"MP9%20|")
- skin = skin.replace("m4a4", r"M4A4%20|")
- skin = skin.replace("scar", r"SCAR-20%20|")
- skin = skin.replace("scar20", r"SCAR-20%20")
- skin = skin.replace("vanillabayonet", r"★ Bayonet")
- skin = skin.replace("vanillabutterfly", r"★ Butterfly Knife")
- skin = skin.replace("vanillafalchion", r"★ Falchion Knife")
- skin = skin.replace("vanillaflip", r"★ Flip Knife")
- skin = skin.replace("vanillagut", r"★ Gut Knife")
- skin = skin.replace("vanillahuntsman", r"★ Huntsman Knife")
- skin = skin.replace("vanillakarambit", r"★ Karambit")
- skin = skin.replace("vanillam9", r"★ M9 Bayonet")
- skin = skin.replace("vanillashadow", r"★ Shadow Daggers")
- skin = skin.replace("vanillabowie", r"★ Bowie Knife")
- skin = skin.replace("vanillabuttplugs", r"★ Shadow Daggers")
- skin = skin.replace("vanillashadowdaggers",r"★ Shadow Daggers")
- skin = skin.replace("vanillam9bayonet", r"★ M9 Bayonet")
- skin = skin.replace("vanillabowieknife", r"★ Bowie Knife")
- skin = skin.replace("bayonet", r"★ Bayonet%20|")
- skin = skin.replace("butterfly", r"★ Butterfly Knife%20|")
- skin = skin.replace("falchion", r"★ Falchion Knife%20|")
- skin = skin.replace("flip", r"★ Flip Knife%20|")
- skin = skin.replace("gut", r"★ Gut Knife%20|")
- skin = skin.replace("huntsman", r"★ Huntsman Knife%20|")
- skin = skin.replace("karambit", r"★ Karambit%20|")
- skin = skin.replace("m9", r"★ M9 Bayonet%20|")
- skin = skin.replace("shadow", r"★ Shadow Daggers%20|")
- skin = skin.replace("bowie", r"★ Bowie Knife%20|")
- skin = skin.replace("buttplugs", r"★ Shadow Daggers%20|")
- skin = skin.replace("shadowdaggers",r"★ Shadow Daggers%20|")
- skin = skin.replace("m9bayonet", r"★ M9 Bayonet%20|")
- skin = skin.replace("bowieknife", r"★ Bowie Knife%20|")
- currency = currency.replace("$", r"USD")
- try:
- req = urllib.request.Request("http://csgobackpack.net/api/GetItemPrice/?currency=%s&id=%s&time=7&icon=1" % (currency, quote(skin)), headers={'User-Agent': 'Mozilla/5.0'})
- page = urllib.request.urlopen(req).read().decode('utf-8')
- jsonData = json.loads(page)
- try:
- average = jsonData["average_price"]
- lowest = jsonData["lowest_price"]
- currency = jsonData["currency"]
- if currency in validCurrencies:
- if currency == "USD":
- keyCost = int(float(average)/2.49)
- send_message(CHAN, 'The average price is %s %s(%s Keys) ' % (average,currency,keyCost))
- elif currency == "SEK":
- keyCost = int(float(average)/20.67)
- send_message(CHAN, 'The average price is %s %s(%s Keys) ' % (average,currency,keyCost))
- elif currency == "EUR":
- keyCost = int(float(average)/2.21)
- send_message(CHAN, 'The average price is %s %s(%s Keys) ' % (average,currency,keyCost))
- elif currency == "GBP":
- keyCost = int(float(average)/1.73)
- send_message(CHAN, 'The average price is %s %s(%s Keys) ' % (average,currency,keyCost))
- elif currency == "RUB":
- keyCost = int(float(average)/162.49)
- send_message(CHAN, 'The average price is %s %s(%s Keys) ' % (average,currency,keyCost))
- except KeyError:
- send_message(CHAN, "Invalid item name!")
- else:
- send_message(CHAN, "not a valid currency! or you didn't add one !pricecurrency")
- except socket.error:
- send_message(CHAN, "@%s -> %s is not a valid name." % (sender, skin))
- except UnicodeEncodeError:
- send_message(CHAN, "Sorry something went wrong")
- else:
- send_message(CHAN, "You must provide a skin name.")
- def command_steamprofile():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
- jsonData = json.loads(page)
- steamid64 = jsonData["steam_id"]
- if steamid64:
- if target == sender:
- send_message(CHAN, "@%s -> Your steamprofile is https://steamcommunity.com/profiles/%s" % (sender,steamid64))
- else:
- send_message(CHAN, "@%s -> %s's steamidprofile is https://steamcommunity.com/profiles/%s" % (sender,target,steamid64))
- else:
- if target == sender:
- send_message(CHAN, "@%s -> Your steam account is not linked." % sender)
- else:
- send_message(CHAN, "@%s -> %s's Steam account is not linked." % (sender, target))
- def command_following():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- page = urllib.request.urlopen(" https://apis.rtainc.co/twitchbot/following?channel=AerozzTV&user=%s" % target).read().decode("utf-8")
- if ("is not following" in page):
- if (target == sender):
- send_message(CHAN, "@%s -> You are not following" % sender)
- else:
- send_message(CHAN, "@%s -> %s is not following" % (sender,target))
- else:
- if (target == sender):
- send_message(CHAN, "@%s -> you have been following for %s " % (sender,page))
- else:
- send_message(CHAN, "@%s -> %s Has been following for %s" % (sender,target,page))
- def command_inventory():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- try:
- page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
- jsonData = json.loads(page)
- steamid64 = jsonData["steam_id"]
- if steamid64:
- req = urllib.request.Request("http://csgobackpack.net/api/GetInventoryValue/?id=%s" % steamid64, headers={'User-Agent': 'Mozilla/5.0'})
- page = urllib.request.urlopen(req).read().decode('utf-8-sig')
- jsonData = json.loads(page)
- price = jsonData["value"]
- if target == sender:
- send_message(CHAN,"@%s -> Your Inventory Value is: $%s" % (sender,price))
- else:
- send_message(CHAN,"@%s -> %s's Inventory Value is $%s" % (sender,target,price))
- else:
- if target == sender:
- send_message(CHAN,"@%s -> Your steam account must be linked to check your inventory value!" %sender)
- else:
- send_message(CHAN,"@%s -> %s's Steam account is not linked." %(sender, target))
- except socket.error:
- send_message(CHAN,"@%s -> That Twitch username seems to be invalid." % sender)
- def command_inventoryhelp():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- try:
- if target == sender:
- send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %sender)
- else:
- send_message(CHAN, "@%s -> Show's inventory value. (IMPORTANT) stickers on default guns might break it." %target)
- except socket.error:
- send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
- def command_steamstate():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- try:
- page = urllib.request.urlopen("https://api.twitch.tv/api/channels/%s" % target).read().decode("utf-8")
- jsonData = json.loads(page)
- steamid64 = jsonData["steam_id"]
- if steamid64:
- page = urllib.request.urlopen("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=9C9530376816B36AEAE1129460042C41&steamids=%s" % steamid64).read().decode("utf-8")
- jsonData = json.loads(page)
- state = jsonData["response"]["players"][0]["personastate"]
- if target == sender:
- send_message(CHAN, "@%s -> Your steamstatus is %s" % sender,state)
- else:
- send_message(CHAN, "@%s -> %s's Steamstatus is %s" % sender,target,state)
- else:
- if target == sender:
- send_message(CHAN, "@%s -> You are not linked" % sender)
- else:
- send_message(CHAN, "@%s -> %s's is not linked" % sender,target)
- except socket.error:
- send_message(CHAN, "@%s -> That Twitch username seems to be invalid." %sender)
- except TypeError:
- send_message(CHAN, "@%s -> You typed it wrong." %sender)
- def command_lastmatch():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- req = urllib.request.Request("http://csgo-stats.net/nightbot.php?user=aerozztv&action=lastmatch" ,headers={'User-Agent': 'Mozilla/5.0'})
- page = urllib.request.urlopen(req).read().decode('utf-8')
- if "Use" in page and "https://csgo-stats.net/" in page:
- pass
- elif "https://csgo-stats.net/" in page and not "Use" in page:
- page = page[:-40]
- send_message(CHAN, "@%s Aerozztv's last game stats are -> %s" % (sender,page))
- def command_pricecurrency():
- global target
- msg = message[:-1].split(" ")
- cmd = msg[0].lower()
- if len(msg) >= 2:
- target = msg[1].strip("@").lower()
- else:
- target = sender
- if (target == sender):
- send_message(CHAN, "@%s -> Currently there is USD, GBP, EUR and SEK." %(sender))
- else:
- send_message(CHAN, "@%s -> Currently there is USD, GBP, EUR and SEK." %(target))
- def command_asdf():
- send_message(CHAN, 'asdfster')
- # --------------------------------------------- End Command Functions ----------------------------------------------
- con = socket.socket()
- con.connect((HOST, PORT))
- send_pass(PASS)
- send_nick(NICK)
- join_channel(CHAN)
- data = ""
- while True:
- try:
- data = data+con.recv(1024).decode('UTF-8')
- data_split = re.split(r"[~\r\n]+", data)
- data = data_split.pop()
- for line in data_split:
- line = str.rstrip(line)
- line = str.split(line)
- if len(line) >= 1:
- if line[0] == 'PING':
- send_pong(line[1])
- if line[1] == 'PRIVMSG':
- sender = get_sender(line[0])
- message = get_message(line)
- parse_message(message)
- print(sender + ": " + message)
- except socket.error:
- print("Socket died")
- except socket.timeout:
- print("Socket timeout")
- except IndexError:
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement