import discord import asyncio import requests from io import StringIO import json token = 'MjY2NzU3OTE4ODU3MjMyMzg0.C1UDeQ.iEP6hp4KukY7bev8j9q6LlB6OwU' apikey = "558296" prefix = '!!' client = discord.Client() commandlist = 0 # any new commands made add them here, its a cheap method yes I know but I'm lazy # todo a = active, x = complete ''' [X} - Miscellaneous, [ ] - Make help / command list under JSON format [X] - Make Basic getStats [X] - Make Kill Recorder [X] - Make KDR reader [A] - Make Accuracy Reader [ ] - Make IvI Calculator | Formula (acc (%) * hsr (%)) [ ] - Summary Display ''' def grab_stat_name(sorted_data): return sorted_data[1][17:len(sorted_data[1]) - 1] def grab_stat_fac(sorted_data): return check_faction(str(sorted_data[3][14:15])) def grab_stat_BR(sorted_data): return str(sorted_data[20][9:-2]) def grab_stat_perBR(sorted_data): return str(sorted_data[18][20:-2]) def grab_stat_remRibbons(sorted_data): return str(sorted_data[22][25:26]) def grab_stat_currentCerts(sorted_data): return str(sorted_data[17][20:-1]) def grab_stats(sorted_data): name = grab_stat_name(sorted_data) fac = grab_stat_fac(sorted_data) BR = grab_stat_BR(sorted_data) perBR = grab_stat_perBR(sorted_data) remRibbons = grab_stat_remRibbons(sorted_data) currentCerts = grab_stat_currentCerts(sorted_data) return name, fac, BR, perBR, remRibbons, currentCerts def check_faction(number): if number == "1": return "VS" elif number == "2": return "NC" elif number == "3": return "TR" else: return "Unknown" @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') @client.event async def on_member_join(member): server = member.server fmt = 'Welcome {0.mention} to Shock Trooperz sick MLG blazing discord, we do cool stuff here. Hint: mute the bot_commands channel unless you like spam, then by all mean enjoy spam!' await client.send_message(server, fmt.format(member, server)) @client.event async def on_message(message): if message.content.startswith(prefix + 'test'): counter = 0 tmp = await client.send_message(message.channel, 'Calculating messages...') async for log in client.logs_from(message.channel, limit=100): if log.author == message.author: counter += 1 await client.edit_message(tmp, 'You have {} messages.'.format(counter)) elif message.content.startswith(prefix + 'help'): await client.send_message(message.channel, '```' + '!!stats <Character Name> <Event Sample Size> - gets basic stats of player, sample size default = 1000' + '\n' + '\n' + "!!help - Shows this menu, thats it" + '\n' + '\n' + "!!gitgud - gitgud" + '\n' + '\n' + "!!signatureMeme - just see for your self" + '\n' + '\n' + "!!squadDesc - shows our squad description template" + '\n' + '\n' + "" + '```' + "Check the progress being made @ https://trello.com/b/wvepGJZM/bot-creation") #obtains the basic stats of the player elif message.content.startswith(prefix + 'stats'): await client.send_typing(message.channel) await asyncio.sleep(0.5) playerName = message.content.split(" ")[1] try: sampleSize = message.content.split(" ")[2] except IndexError: sampleSize = '1000' print(sampleSize) temp = await client.send_message(message.channel, 'Getting stats for ' + playerName) playerName = playerName.lower() # Grab HTMl to get the basic of player stats html = "https://census.daybreakgames.com/s:" + apikey + "/get/ps2:v2/character/?name.first_lower=" + playerName page = requests.get(html) print(html) data = page.text sorted_data = data.split(',') playerID = sorted_data[0][36:-1] name, fac, BR ,perBR, remRibbons, currentCerts = grab_stats(sorted_data) # Grab new HTML with Player ID to get KDR and HSR stats html = "https://census.daybreakgames.com/s:" + apikey + "/get/ps2:v2/characters_event/?character_id=" + playerID + "&type=KILL,DEATH&c:limit=" + sampleSize print(html) page = requests.get(html) encoded_json = page.json() print(encoded_json) hs = 0 kills = 0 deaths = 0 recordedevents = 0 for x in range(int(sampleSize)): try: if encoded_json['characters_event_list'][x]['table_type'] == 'kills': hs += int(encoded_json['characters_event_list'][x]['is_headshot']) kills += 1 else: deaths += 1 recordedevents += 1 except IndexError: break # todo - make these calls into separate functions in a new package .py file # Returning Name try: kdr = kills / deaths except ZeroDivisionError: kdr = 'infinity' try: hsr = 100 / kills hsr = hsr * hs except ZeroDivisionError: hsr = 'infinity' await client.edit_message(temp, "```" + '\n' + "Character Name : " + name + '\n' + "Faction : " + fac + '\n' + "Battle Rank : " + BR + '\n' + "Battle Rank Completion %" + str((float(perBR) * 100)) + '\n' + "You have " + remRibbons + " daily ribbons remaining" + '\n' + "You have " + currentCerts + " certs available" + '\n' + "(Last " + str(recordedevents) + " events)" + '\n' + "Kills : " + str(kills) + "| Headshots : " + str(hs) + "| Deaths : " + str(deaths) + '\n' + "KDR : " + str(kdr) + '\n' + "HSR : %" + str(hsr) + '\n' + "```" + '\n' + "https://www.planetside2.com/players/#!/" + playerID + "/killboard") elif message.content.startswith(prefix + 'sleep'): await asyncio.sleep(5) await client.send_message(message.channel, 'Done sleeping') elif message.content.startswith(prefix + 'gitgud'): await client.send_message(message.channel, 'Shoot heads') elif message.content.startswith(prefix + 'signatureMeme'): await client.send_message(message.channel, 'https://cdn.discordapp.com/attachments/267491317318156289/268205216686407681/NaSq7ET.png') elif message.content.startswith(prefix + 'squadDesc'): await client.send_message(message.channel, '``` <font color="#ffff33" size = "21"> SHOCK TROOPERZ ```') elif message.content.startswith(prefix + 'serverstats'): await client.send_message(message.channel, 'http://ps2.fisu.pw/activity/?world=17') elif message.content.startswith(prefix + 'invite'): await client.send_message(message.channel,'https://discord.gg/e8FkG') client.run(token)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question