263 lines
6.8 KiB
Python
263 lines
6.8 KiB
Python
import matplotlib
|
||
|
||
import matplotlib.pyplot as plt
|
||
|
||
import numpy as np
|
||
import csv
|
||
from csv import reader
|
||
|
||
xaxis = np.array([0])
|
||
yaxis = np.array([0])
|
||
import csv
|
||
from matplotlib.pyplot import figure
|
||
import time
|
||
import datetime
|
||
from datetime import date
|
||
from random import seed
|
||
from random import random
|
||
import discord
|
||
from discord.ext import commands, tasks
|
||
import asyncio
|
||
from discord.ext import commands
|
||
from pathlib import Path
|
||
import requests
|
||
import json
|
||
|
||
#made by Spaffel if you have any Problems contact me on Discord Spaffel#0581
|
||
|
||
|
||
|
||
|
||
|
||
#enter your information here
|
||
serverip = "play.spaffel.de"
|
||
port = "25565"
|
||
bottoken = "your-bot-token"
|
||
|
||
|
||
|
||
intents = discord.Intents.default()
|
||
intents.members = True
|
||
|
||
client = discord.Client(intents=intents)
|
||
|
||
|
||
|
||
client = commands.Bot(command_prefix='!', intents=intents)
|
||
client.remove_command("help")
|
||
|
||
|
||
uhrzeiten = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "00" ]
|
||
|
||
figure(figsize=(8, 6), dpi=80)
|
||
|
||
Uhrzeit = "14"
|
||
Datum = "2021-10-10"
|
||
|
||
|
||
|
||
|
||
@tasks.loop(seconds=240.0)
|
||
async def collectdata():
|
||
try:
|
||
print('lol')
|
||
today = date.today()
|
||
timestamp = time.strftime('%H:%M')
|
||
|
||
headers = {
|
||
"ip": serverip,
|
||
"port": port
|
||
}
|
||
|
||
url = 'http://api.spaffel.de:3667/getdata'
|
||
|
||
s = requests.Session()
|
||
s.headers.update({"ip" : serverip, "port": port })
|
||
response = requests.post(url, headers = headers)
|
||
|
||
response = json.loads(response.text)
|
||
|
||
print(response)
|
||
|
||
print("The server has {0} players and replied in {1} ms".format(response['players'], response['ping']))
|
||
|
||
with open('data.csv', 'r', newline='') as file:
|
||
writer = csv.writer(file)
|
||
reader = csv.reader(file)
|
||
print()
|
||
lines= len(list(reader))
|
||
|
||
|
||
fields = [today, timestamp, response['players'], response['ping'], serverip]
|
||
with open('data.csv', 'a') as f:
|
||
writer = csv.writer(f)
|
||
writer.writerow(fields)
|
||
except Exception as e:
|
||
print(e)
|
||
pass
|
||
|
||
collectdata.start()
|
||
|
||
|
||
|
||
|
||
|
||
@client.command()
|
||
async def pcount(ctx):
|
||
headers = {
|
||
"ip": serverip,
|
||
"port": port
|
||
}
|
||
|
||
url = 'http://api.spaffel.de:3667/getdata'
|
||
|
||
s = requests.Session()
|
||
s.headers.update({"ip" : serverip, "port": port })
|
||
response = requests.post(url, headers = headers)
|
||
|
||
response = json.loads(response.text)
|
||
players =response['players']
|
||
ping = response['ping']
|
||
print('hhh')
|
||
await ctx.channel.send(f'{players} Players are Online. Ping: {ping}')
|
||
|
||
|
||
|
||
|
||
|
||
def uhrzeitdurch(uhrzeit, Datum):
|
||
with open("data.csv", "r") as csv_file:
|
||
durchschnittmasse = 0
|
||
durchschnittcount = 0
|
||
csv_reader = csv.DictReader(csv_file, delimiter=',')
|
||
for lines in csv_reader:
|
||
s = lines['Uhrzeit']
|
||
s = s[:2]
|
||
print(s)
|
||
if s == uhrzeit:
|
||
print('ich komme bis hier1')
|
||
if str(lines['Datum']) == str(Datum):
|
||
print('ich komme bis hier2')
|
||
datumu = lines['Uhrzeit']
|
||
playercount = lines['playercount']
|
||
print(datumu)
|
||
|
||
durchschnittcount = durchschnittcount +1
|
||
durchschnittmasse = durchschnittmasse + int(playercount)
|
||
|
||
print(playercount)
|
||
durchschnitt = durchschnittmasse//durchschnittcount
|
||
print(f'durchschnitt: {durchschnitt}')
|
||
return durchschnitt
|
||
|
||
def pingdurch(uhrzeit, Datum):
|
||
with open("data.csv", "r") as csv_file:
|
||
durchschnittmasse = 0
|
||
durchschnittcount = 0
|
||
csv_reader = csv.DictReader(csv_file, delimiter=',')
|
||
for lines in csv_reader:
|
||
s = lines['Uhrzeit']
|
||
s = s[:2]
|
||
|
||
if s == uhrzeit:
|
||
|
||
if str(lines['Datum']) == str(Datum):
|
||
|
||
datumu = lines['Uhrzeit']
|
||
playercount = lines['latenz']
|
||
|
||
|
||
durchschnittcount = durchschnittcount +1
|
||
durchschnittmasse = durchschnittmasse + float(playercount)
|
||
|
||
|
||
durchschnitt = durchschnittmasse//durchschnittcount
|
||
|
||
return durchschnitt
|
||
|
||
|
||
|
||
@client.command()
|
||
async def serverstats(ctx):
|
||
try:
|
||
plt.clf()
|
||
#ganzen tag berechnen:
|
||
xaxis = np.array([0])
|
||
yaxis = np.array([0])
|
||
timestamp = time.strftime('%H')
|
||
today = date.today()
|
||
print(timestamp)
|
||
for uhrzeit in uhrzeiten:
|
||
print(f'uhrzeit = {uhrzeit} datum = {today}')
|
||
try:
|
||
durch = uhrzeitdurch(uhrzeit, today)
|
||
to_append = np.array([uhrzeit])
|
||
xaxis = np.append(xaxis, to_append)
|
||
to_append = np.array([durch])
|
||
yaxis = np.append(yaxis, to_append)
|
||
print(f'uhrzeit: {uhrzeit} durch {durch}')
|
||
except Exception as e:
|
||
print(e)
|
||
pass
|
||
namerandomnum = random()
|
||
filename = f'{Datum} -{namerandomnum}.png'
|
||
plt.plot(xaxis, yaxis)
|
||
plt.savefig(filename)
|
||
await ctx.channel.send('Player-Stats of Today::')
|
||
await ctx.channel.send(file=discord.File(filename))
|
||
except Exception as e:
|
||
print(e)
|
||
pass
|
||
|
||
try:
|
||
#ganzen tag berechnen:
|
||
plt.clf()
|
||
timestamp = time.strftime('%H')
|
||
today = date.today()
|
||
print(timestamp)
|
||
xxaxis = np.array([0])
|
||
xyaxis = np.array([0])
|
||
for uhrzeit in uhrzeiten:
|
||
print(f'uhrzeit = {uhrzeit} datum = {today}')
|
||
try:
|
||
durch = pingdurch(uhrzeit, today)
|
||
to_append = np.array([uhrzeit])
|
||
xxaxis = np.append(xxaxis, to_append)
|
||
to_append = np.array([durch])
|
||
xyaxis = np.append(xyaxis, to_append)
|
||
print(f'uhrzeit: {uhrzeit} durch {durch}')
|
||
except Exception as e:
|
||
print(e)
|
||
pass
|
||
namerandomnum = random()
|
||
filename = f'{Datum} -{namerandomnum}.png'
|
||
plt.plot(xxaxis, xyaxis)
|
||
plt.savefig(filename)
|
||
await ctx.channel.send('Ping-Stats of Today:')
|
||
await ctx.channel.send(file=discord.File(filename))
|
||
except Exception as e:
|
||
print(e)
|
||
pass
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
client.run(bottoken)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|