İnternetten veri çeken Discord botu yapımı

ikiikiyedi

Decapat
Katılım
5 Eylül 2021
Mesajlar
167
Çözümler
1
Yer
Muğla
Daha fazla  
Cinsiyet
Erkek
Meslek
Bilgisayar mühendisi
Herkese selam. Proje ödevim için yaptığım Discord botunun kodları. Discord'a! Money + "görmek istediğiniz para(euro, dolar)" yazdığınızda anlık değerlerini gösteriyor, buna data mining diyoruz. Ek olarak "!stability" yazdığınızda Replit'e yüklediğim csv datasetlerden faydalanarak standart sapması en düşük olan para birimini gösteriyor. Bu sitede henüz kod eklemedim, umarım doğru biçimde ekleyebilirim.
(Normalde bu tarz yaptığım şeyleri paylaşmak istemezdim. Bir bilgisayar mühendisi öğrencisi olarak Türkçe kaynakların yetersizliğinin çok fazla farkındayım. Muhtemelen siz de bir şey araştırdığınızda yeteri kadar Türkçe kaynak göremiyorsunuz. Geçen hafta aldığım karar üzerine bundan sonra oluşturduğum işe yarar her şeyi, iyi olduğum her konudaki bilgilerimi paylaşacağım. Gerek burada gerek YouTube'da. Umarım işine yarayan birileri çıkar.)
Gerekli kütüphaneleri import ediyoruz.

Python:
import os.
import discord.
from keep_alive import keep_alive.
import requests.
from requests_html import HTMLSession.
import csv.
import pandas as pd.
import statistics

Botu Discord'a bağlıyoruz.

Python:
client = discord.Client()
my_secret = os.environ['token']

Çalışacak olan döngüler. Açıklamaya üşendim, takıldığınız yer olursa sorabilirsiniz.

Python:
def getInput(inputMoney):
 input_money = inputMoney.strip()
 name = (input_money + " kaç tl").strip()
 url = "https://www.google.com.tr/search?q=" + name.

 return url.

def startSession(queryUrlInput):
 try:
 session = HTMLSession()
 response = session.get(queryUrlInput)

 except requests.exceptions.RequestException as e:
 print(e)

 return response.

def findCurrencyValue(sessionInput):
 css_identifier_query_name = ".wDYxhc"
 css_identifier_input_money = ".vk_sh"
 css_identifier_output_value = ".dDoNo"

 result = sessionInput.html.find(css_identifier_query_name)[0]

 item = {'input_money': "Invalid Currency", 'output_value': "Invalid Currency"}
 try:
 item = {
 'input_money': result.find(css_identifier_input_money, first=True).text,
 'output_value': result.find(css_identifier_output_value, first=True).text
 }
 except:
 pass.

 return item.

@client.event
async def on_ready():
 print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):

 msg = message.content

 if message.author == client.user:
 return

Money yazdığımızda döngüleri çalıştıracak ve botun kanala mesaj göndermesini sağlayacak olan kısım.

Python:
if msg.startswith('!money'):
 money = str(msg).split(" ")[1]
 queryUrl = getInput(money)
 session = startSession(queryUrl)
 money = findCurrencyValue(session)

 await message.channel.send("Currently value is: "+(money['output_value']))

 value = money['output_value'].split(" ")[0]

Stability yazdığımızda en az standart sapmaya sahip olan birimi görmenizi sağlayacak olan kısım.

Python:
if msg.startswith('!stability'):
 csvSterlin = pd.read_csv("normalized_sterlin.csv",sep=";")
 csvUsd = pd.read_csv("normalized_usd.csv",sep=";")
 csvEuro = pd.read_csv("normalized_euro.csv",sep=";")

 sd_sterlin = statistics.stdev(list(csvSterlin.loc[:,"sterlin"]))
 sd_usd = statistics.stdev(list(csvUsd.loc[:,"usd"]))
 sd_euro = statistics.stdev(list(csvEuro.loc[:,"euro"]))
 mostStable=""
 if(sd_sterlin < sd_usd) and (sd_sterlin < sd_euro):
 mostStable = "Sterlin"
 if(sd_usd < sd_euro) and (sd_usd < sd_sterlin):
 mostStable = "Usd"
 if(sd_euro < sd_sterlin) and (sd_euro < sd_usd):
 mostStable = "Euro"
 await message.channel.send(mostStable + " is the most stable currency.")

Discord botunun 7/24 açık kalmasını sağlayan, dashboard sitesiyle ilgili olan kod kısmı (tam olarak ne olduğunu araştırabilirsiniz)

Python:
keep_alive()
client.run(os.getenv('token'))
 
Son düzenleyen: Moderatör:

Geri
Yukarı