- Mesaj
- 89
- Beğeni
- 90
- Puan
- 729
Discord için yapıldı, aşağıda discord için nasıl veri çekebileceğiniz de gösterilmiştir.
Herhangi bir cache/api tekrar sorgu süresi eklenmemiştir, kullanmak isteyenlerin biraz geliştirmesi gerekiyor, buradaki kod çok basit, daha çok nasıl yapılabilir konusunda fikir vermesi amaçlanmıştır.
Server konusunda freebsd de flask nasıl çalıştırılır internette biraz araştırma yaparsanız bulabilirsiniz, ben sunucuyu açtıktan sonra flask sunucusunu başlattım localde bir sorunla karşılaşmadım.
Sunucu taraflı:
Discord sorgusu:
Herhangi bir cache/api tekrar sorgu süresi eklenmemiştir, kullanmak isteyenlerin biraz geliştirmesi gerekiyor, buradaki kod çok basit, daha çok nasıl yapılabilir konusunda fikir vermesi amaçlanmıştır.
Server konusunda freebsd de flask nasıl çalıştırılır internette biraz araştırma yaparsanız bulabilirsiniz, ben sunucuyu açtıktan sonra flask sunucusunu başlattım localde bir sorunla karşılaşmadım.
Sunucu taraflı:
Python:
import socket
from flask import Flask, render_template, request, jsonify
import mysql.connector
app = Flask(__name__)
@app.route("/players/<string:name>")
def get_info(name):
connection = mysql.connector.connect(
host="192.168.1.45",
user ="root",
password = "123456789",
database=""
)
cursor = connection.cursor()
query = "SELECT * FROM player.player WHERE name=%s"
cursor.execute(query, (name,))
infos = cursor.fetchall()
connection.close()
infos_list = []
for info in infos:
info_dict = {
"name": info[2],
"job": info[3],
"playtime": info[18],
"level": info[19],
"last_play": info[37]
}
infos_list.append(info_dict)
return jsonify(infos_list)
if __name__ == "__main__":
app.run(app.run(host="0.0.0.0"), debug=True)
Discord sorgusu:
Python:
####### M2 API TEST #######
if message.content.startswith('.player'):
player_name = message.content.split(' ')[1]
url = f"http://192.168.1.45:5000/players/{player_name}"
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
playtime = data[0]["playtime"]
hours = playtime // 60
minutes = playtime % 60
if data[0]["job"] in (0,4):
txt = (f'Name: {data[0]["name"]}\n'
f'Level: {data[0]["level"]}\n'
f'Voc: Warrior\n'
f'Playtime: {hours}hrs {minutes}min\n'
f'Last Login: {data[0]["last_play"]}\n')
elif data[0]["job"] in (3, 7):
txt = (f'Name: {data[0]["name"]}\n'
f'Level: {data[0]["level"]}\n'
f'Voc: Shaman\n'
f'Playtime: {hours}hrs {minutes}min\n'
f'Last Login: {data[0]["last_play"]}\n')
elif data[0]["job"] in (1, 5):
txt = (f'Name: {data[0]["name"]}\n'
f'Level: {data[0]["level"]}\n'
f'Voc: Ninja\n'
f'Playtime: {hours}hrs {minutes}min\n'
f'Last Login: {data[0]["last_play"]}\n')
elif data[0]["job"] in (2, 6):
txt = (f'Name: {data[0]["name"]}\n'
f'Level: {data[0]["level"]}\n'
f'Voc: Sura\n'
f'Playtime: {hours}hrs {minutes}min\n'
f'Last Login: {data[0]["last_play"]}\n')
else:
txt = (f'Name: {data[0]["name"]}\n'
f'Level: {data[0]["level"]}\n'
f'Voc: Lycan\n'
f'Playtime: {hours}hrs {minutes}min\n'
f'Last Login: {data[0]["last_play"]}\n')
await message.channel.send(txt)
except requests.exceptions.HTTPError as e:
await message.channel.send("An error occurred: " + str(e))
except:
await message.channel.send("An error occurred.")