)を変更し、API アクセス機能を追加しました。
まず、Flows.network の初期コードを私の GitHub アカウントに fork しました。以下のリンクで確認できます:https://github.com/flows-network/telegram-gpt/tree/less-chatty
次に、Setting 内の Configuration オプションに API の URL を追加しました。
その後、コードの修正を開始しました:
まず、Cargo.toml ファイルの [dependencies] 部分に http_req_wasi の依存項を追加しました:
http_req_wasi = "0.10.2"
lib.rs ファイルでは、以下のように変更を行いました:
以下の use 文を追加しました:
use serde_json::{Value,json};
use http_req::{
request::{Method, Request},
uri::Uri,
};
url を定義し、Flows.network の Configuration から値を取り出しました:
let api_url = std::env::var("api_url").unwrap();
json ファイルを解析して対応するデータを取得しました:
else if text.eq_ignore_ascii_case("/top") || text.eq_ignore_ascii_case("/top@GameFiDash_bot") {
let fetch_uri: Uri = Uri::try_from(api_url).unwrap();
let mut bytes = Vec::new();
Request::new(&fetch_uri)
.method(Method::GET)
.send(&mut bytes).unwrap();
let json_str = String::from_utf8(bytes).unwrap();
log::info!("Received from web service : {}", json_str);
let c: Value = serde_json::from_str(&json_str).unwrap();
let data_arr = c["data"]["data"].as_array().unwrap();
let mut final_str = String::new();
final_str.push_str("Here are top 10 tokens from GamefiDash API:\n\n");
for d in data_arr {
let mut resp_str = String::new();
resp_str.push_str("Name: ");
resp_str.push_str(d["name"].as_str().unwrap());
resp_str.push_str("\n");
resp_str.push_str("Address: ");
resp_str.push_str(d["main_token_address"].as_str().unwrap());
resp_str.push_str("\n");
let token_arr = d["tokens"].as_array().unwrap();
for t in token_arr {
if let Some(p) = t["price"].as_f64() {
resp_str.push_str("Price: ");
resp_str.push_str(&p.to_string());
resp_str.push_str("\n\n");
break;
}
}
final_str.push_str(&resp_str);
}
final_str.push_str(&help_mesg);
_ = tele.send_message(chat_id, &final_str);
}
修正が完了後、commit と push を行い、私の Telegram Bot は昨日よりも進化し、API を介して Top Web3 Game のリストを取得する機能が追加されました。
毎回git push の後,Flows.network が自動的にビルドを行い、全体のプロセスは非常にスムーズでした。
もしコンパイル中にエラーが発生した場合、それは私に解決方法に関するいくつかのガイダンスを提供してくれます。
袁博士はコメントしました。「これが多くの開発者が GitOps を好む理由です。」