ÖNEMLİ: Repo'yu gerçekleştirirken BURADAKİ müziği dinlemezseniz rewards alamıyorsunuz.
Selamlar, Arweave ve AO'yu Tuna Tavus gibi yemeye deveam ediyoruz xd
Bu repo'da tıpkı AO'da yaptığımız gibi 0rbit için 2 bot kurup Puanları toplayacağız.
zaten öncelerinden aşinasınız siz hemen yaparsınız. Bu 2 görev puanı 200 ve 300 totalde 500 puan
Donanım olarak herhangi bir sunucunuzda kurulum gerçekleştirebilirsiniz, bir koşul yok şu an.
# sunucu güncelleme
sudo apt update -y && sudo apt upgrade -y
# komutları sırasıyla girelim:
curl -sL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh
sudo bash /tmp/nodesource_setup.sh
sudo apt install nodejs
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install v20.10.0
nvm use v20.10.0
npm install -g npm@latest
# AOyu yüklüyoruz
npm i -g https://get_ao.g8way.io
Şimdi tam burada Visual Studio Code'a geçiyoruz (yoksa indirelim)
Buradaki repo'da User / Root kısmına kadar yapmamız yeterli.
# sunucumuzda çalıtırıyoruz
aos orbit --cron 30-seconds
# proeses IDimizi kaydediyoruz.
Aşağıya yazacağım kodu girmeden önce Visual'dan new file diyoruz.
File ismi:
0rbit-Price-Feed.lua
olacak ve aşağıdaki kodu içine girip ctrl + s ile kaydediyoruz
Kodda 2 yer düzenlencek,
PID XXXXXXXX
yazan yere orbit process id -Handlers.add("GITHUB",
yazan yere github account yazıyoruz.
-- PID XXXXXXXXXXXXXXXX
local json = require("json")
_ORBIT = "WSXUI2JjYUldJ7CKq9wE1MGwXs-ldzlUlHOQszwQe0s"
function handleError(msg, errorMessage)
ao.send({
Target = msg.From,
Tags = {
Action = "Error",
["Message-Id"] = msg.Id,
Error = errorMessage
}
})
end
Handlers.add("GITHUB",
Handlers.utils.hasMatchingTag("Action", "Sponsored-Get-Request"),
function(msg)
local token = msg.Tags.Token
if not token then
handleError(msg, "Token not provided")
return
end
local url = "https://api.coingecko.com/api/v3/simple/price?ids=" .. token .. "&vs_currencies=usd"
ao.send({
Target = _ORBIT,
Action = "Get-Real-Data",
Url = url
})
print("Pricefetch request sent for " .. token)
end
)
Handlers.add("ReceiveData",
Handlers.utils.hasMatchingTag("Action", "Receive-Response"),
function(msg)
print("Received data: " .. msg.Data)
local res = json.decode(msg.Data)
local token = msg.Tags.Token
if res[token] and res[token].usd then
ao.send({
Target = msg.From,
Tags = {
Action = "Price-Response",
["Message-Id"] = msg.Id,
Price = res[token].usd
}
})
print("Price of " .. token .. " is " .. res[token].usd)
else
handleError(msg, "Failed to fetch price")
end
end
)
Sunucunmuza geri dönüp:
# dosyayı load ediyoruz
.load 0rbit-Price-Feed.lua
# monitoru çalıştırıyoruz
.monitor
# eth fiyatını çekiyoruz
Send({ Target = ao.id, Action="Sponsored-Get-Request", Tags = { Token = "ethereum" }})
Buradakine benzer bir çıktınız olacak bunun fotoğrafını alın kaydedin.
Buradaki repoyu forkluyoruz - forkumuzda 1 klasör açıyoruz, anlatıyorum:
Aşağıdaki gibi File'a ismi veriyoruz (kendi github ısmınızı girin) sonra / işareti koyunca o bir klasör oluyor
![Ekran Resmi 2024-05-18 12 19 40](https://private-user-images.githubusercontent.com/101149671/331784269-db965b8e-f63f-4a8d-b1b4-3e875bcc4326.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5MTU1NTAsIm5iZiI6MTcyMzkxNTI1MCwicGF0aCI6Ii8xMDExNDk2NzEvMzMxNzg0MjY5LWRiOTY1YjhlLWY2M2YtNGE4ZC1iMWI0LTNlODc1YmNjNDMyNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QxNzIwNTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jNjRkOTIxZmIyN2JhNzEzNjRjMGJhODllNjMzNjUzNTg0OWRjNzI3NDU3NTE2NDdkNDBjNWFkZmNhZjY5NmJkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.cbSoKsSRXPwWxgtYiGIHzjyo0WjSauITUgh-7VRkXK8)
Klasör içindeki ilk dosyamızın adı
0rbit-Price-Feed.lua
onun içine Visual'daki dosyayı import ediyoruz.
Klasör içindeki ikinci dosyamızın adı
0rbit-Price-Feed.jpg
veya0rbit-Price-Feed.png
(türü neyse)
Price bot için 2 bilgi olan .lua ve görseli hazırladık ve kaydedelim fork reponuzu.
# Şimdi Claim edelim yaptığımız işi
Send({Target= "O3SXXYqQCNTbBedJjsW6wkPnrKFZq8DPLkKjO7zhztE", Action = "Claim", Quest = "Price-Bot", User = "GITHUB"})
# Github adını düzenleyin en sonda komudun.
# CTRL C ile aos u durduruyoruz öncelikle
aos 0rbitNewsFeed --cron 30-seconds
# News için proses id kaydediyoruz
Visual'da bu sefer
0rbit-News-Feed.lua
adında klasör açıyoruz.
içersine aşağıdaki kodu giriyoruz fakat burada sadece XXXXXXX olan yere proesesi giriyoruz o kadar.
-- ao.id XXXXXXX
local json = require("json")
local _0RBIT = "WSXUI2JjYUldJ7CKq9wE1MGwXs-ldzlUlHOQszwQe0s"
local URL = "https://api.theblockbeats.news/v1/open-api/open-flash?size=5&page=1&type=push"
ReceivedData = ReceivedData or {}
Handlers.add(
"Get-Request",
Handlers.utils.hasMatchingTag("Action", "Sponsored-Get-Request"),
function(msg)
Send({
Target = _0RBIT,
Action = "Get-Real-Data",
Url = URL
})
print("GET Request sent to the 0rbit process.")
end
)
Handlers.add(
"Receive-Data",
Handlers.utils.hasMatchingTag("Action", "Receive-Response"),
function(msg)
if not msg.Data then
print("No data received.")
return
end
local res = json.decode(msg.Data)
ReceivedData1 = res.data.data
local extractedData = {}
for k, v in ipairs(ReceivedData1) do
table.insert(extractedData, {
title = v.title,
description = v.content
})
ReceivedData = extractedData
end
print("Processed data: " .. json.encode(ReceivedData1))
end
)
local function getLatestData(msg)
local data = json.encode(ReceivedData)
Handlers.utils.reply(data)(msg)
print("Latest data sent: " .. data)
end
Handlers.add(
"GetLatestData",
Handlers.utils.hasMatchingTag("Action", "Get-Latest-Data"),
getLatestData
)
local function fetchNewsPeriodically()
Send({
Target = _0RBIT,
Action = "Get-Real-Data",
Url = URL
})
print("Periodic GET Request sent to the 0rbit process.")
end
Handlers.add(
"CronTick",
Handlers.utils.hasMatchingTag("Action", "Cron"),
fetchNewsPeriodically
)
# load et
.load 0rbit-News-Feed.lua
# monitor başlat
.monitor
# veri çek
Send({ Target = ao.id, Action="Sponsored-Get-Request"})
Aynı şekilde az önce Price Bot için yaptığımız gibi News bot içinde github'ımıza görsel + .lua dosyasını ekliyoruz.
2 folderda hazır olduğunda şöyle görünecek:
![Ekran Resmi 2024-05-18 12 32 26](https://private-user-images.githubusercontent.com/101149671/331787394-1302604b-f8aa-4e48-aed8-dd84b01e75e5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5MTU1NTAsIm5iZiI6MTcyMzkxNTI1MCwicGF0aCI6Ii8xMDExNDk2NzEvMzMxNzg3Mzk0LTEzMDI2MDRiLWY4YWEtNGU0OC1hZWQ4LWRkODRiMDFlNzVlNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QxNzIwNTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hNTNiMzRkMDQxYTU5NzJjYTNkYmNmZWFmMjk0MWQxZjNhNjdkYmE1YmE0NzYxZjViZDA5NGVlZGMyNmE4ZWI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.8oYuJ0P71NFEJwODJkpx2b1NF6vIYbc5Oe71ZsKhrPM)
Akabinde pull request kısmında PR çekiyoruz
![Ekran Resmi 2024-05-18 12 32 02](https://private-user-images.githubusercontent.com/101149671/331787226-f14e1137-e9c4-44fa-a8a5-a123d7da6234.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5MTU1NTAsIm5iZiI6MTcyMzkxNTI1MCwicGF0aCI6Ii8xMDExNDk2NzEvMzMxNzg3MjI2LWYxNGUxMTM3LWU5YzQtNDRmYS1hOGE1LWExMjNkN2RhNjIzNC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QxNzIwNTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNWNmYWY0MzE5ODFhZTQwNWIwZDc3MDYwY2VmOGQwN2Q5YWY1ODJmZjE4N2VjMWEyMmI1ZmI3NWJhNTM0MjRiJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.Cx_dM0IeLDqr1715k6_Jpe6KuZWwwE2U0Fv4lZrjljw)
Buradaki gibi bir PR repomuz oluyor.
# claim edin News Botu da.
Send({Target= "O3SXXYqQCNTbBedJjsW6wkPnrKFZq8DPLkKjO7zhztE", Action = "Claim", Quest = "News-Bot", User = "GITHUBADI"})
Tebrikler Neo. Artık 0rbit'in en yüksek 2 puana sahip görevlerini tamamladın.
Yakında PR kabul edilenler (elicibıl) WL olacak ve bu ödüllerini Claim edecek - duyuru atarım günü gelince.
Daha fazlası olursa buraya eklerim Neo.
Selametle..