Untitled
unknown
python
3 years ago
6.8 kB
5
Indexable
from bs4 import BeautifulSoup from urllib.request import urlopen, Request import re import requests import discord from dotenv import load_dotenv from os import getenv from discord.ext import commands intents = discord.Intents().all() bot = commands.Bot(command_prefix="!", intents=intents) load_dotenv() match = [] data = [] dropdabombman = False def action_is_coming(team1_name, team2_name): joukkuenimi = get_teamname(team1_name) print(joukkuenimi) match = get_steamid(joukkue1) elo = elo_calculator(match) elo_stats = sort_elo(elo) pelaaja_count = pelaaja_statsit(match) elo_oikeassa_muodossa = list_to_string(elo) if elo_stats[1] > 0: all_info = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str( pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str( elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \ str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str( int(elo_stats[1])) + "\n" else: all_info = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str( pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str( elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \ str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(int(elo_stats[0])) + "\n" joukkuenimi = get_teamname(team2_name) print(joukkuenimi) match = get_steamid(joukkue2) elo = elo_calculator(match) elo_stats = sort_elo(elo) pelaaja_count = pelaaja_statsit(match) elo_oikeassa_muodossa = list_to_string(elo) if elo_stats[1] > 0: all_info2 = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str( pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str( elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \ str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str( int(elo_stats[1])) + "\n" else: all_info2 = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str( pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str( elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \ str(int(elo_stats[ 0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(int(elo_stats[0])) + "\n" return all_info, all_info2 def list_to_string(list): str1 = "" for a in list: str1 += str(a) + " " return str1 def pelaaja_statsit(match): pelaajat_numeroina = str(len(match)) print("Number of players: " + pelaajat_numeroina) return pelaajat_numeroina def get_teamname(joukkue): for b in joukkue: joukkuenimi = (b.text) return joukkuenimi def get_steamid(joukkue): for b in joukkue: parsed_text = (b.text) id = re.compile('765.*') match = id.findall(parsed_text) print(match) return match def sort_elo(elo): elo.sort(reverse=True) print(elo) average_elo = sum(elo) / len(elo) if len(elo) >= 5: stars = (elo[0] + elo[1] + elo[2] + elo[3] + elo[4]) / 5 print("Star lineup elo: " + str(int(stars))) else: stars = 0 print("Average elo: " + str(int(average_elo))) return average_elo, stars def souppers(url): page = urlopen(Request(url, headers={ 'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0'})) html_bytes = page.read() html = html_bytes.decode("utf-8") soup = BeautifulSoup(html, "html.parser") return soup def link_check(link): request = requests.get(link) if request.status_code < 400: return True else: return False def elo_calculator(steam_id): elo = [] for a in steam_id: faceitfinder_url = "https://faceitfinder.com/profile/" + a #if link_check(faceitfinder_url): soup = souppers(faceitfinder_url) faceit_info = soup.find_all("div", {"class": "account-faceitinfo-container"}) for b in faceit_info: faceit_stats = (b.text) elo_regex = re.compile('(?<=ELO: ).*') # name_regex = re.compile('^[^\\s].*') // TODO: FAILED USERNAME CAPTURING # username = name_regex.findall(faceit_stats) # print(username) elo_points = elo_regex.findall(faceit_stats) '''for b in username: if b != "": userlist.append(username)''' for a in elo_points: if a != "": elo_point = int(elo_points[0]) elo.append(elo_point) #else: #elo_point = -1 #elo.append(elo_point) return elo @bot.event async def on_message(message): global joukkue1 global joukkue2 if message.author == bot.user: return if "!etsi" in message.content: data = message.content.split() if data[0] != "!etsi": await message.channel.send("!etsi ekana vitun daiju") elif len(data) == 2: pattern = re.compile('^https://play.toornament.com/en_US/tournaments/5678863007994986496/matches/.*/players$') match = re.search(pattern, data[1]) if match: if link_check(data[1]): soup = souppers(data[1]) joukkue1, joukkue2 = soup.find_all("div", {"class": ["size-1-of-2 mobile-size-full", "text-bold"]}) team1_name, team2_name = soup.find_all("h3") joukkio1, joukkio2 = action_is_coming(team1_name, team2_name) await message.channel.send(joukkio1) await message.channel.send(joukkio2) else: await message.channel.send("Linkkisi ei toiminut!") else: await message.channel.send("Lopeta se botin rikkominen, anna oikea url") else: await message.channel.send("Anna url senkin höpsöliini (ja pelkästään url :) )") elif message.content == "!apua" or message.content == "!help": await message.channel.send("Käytä komentoa muodossa !etsi https://play.toornament.com/en_US/tournaments/5678863007994986496/matches/5971603441757667451/players . Katso että urli on esimerkin mukainen") elif "hidas" in message.content: await message.channel.send("Ite oot hidas") else: return bot.run(getenv('TOKEN'))
Editor is loading...