|
@@ -7,10 +7,12 @@ using Telegram.Bot;
|
|
|
using Telegram.Bot.Args;
|
|
|
using Telegram.Bot.Types;
|
|
|
using Telegram.Bot.Types.Enums;
|
|
|
+using Newtonsoft.Json;
|
|
|
+using System.Net;
|
|
|
|
|
|
namespace EthermineBotTelegram
|
|
|
{
|
|
|
- class Program
|
|
|
+ class Program
|
|
|
{
|
|
|
static ITelegramBotClient botClient;
|
|
|
static void Main(string[] args)
|
|
@@ -53,7 +55,12 @@ namespace EthermineBotTelegram
|
|
|
|
|
|
// get actual data from ethermine
|
|
|
case "/actual":
|
|
|
- //await GetActualData();
|
|
|
+ GetActualData(e);
|
|
|
+ break;
|
|
|
+
|
|
|
+ // send help
|
|
|
+ case "/help":
|
|
|
+ //await SendHelp();
|
|
|
break;
|
|
|
|
|
|
default:
|
|
@@ -66,5 +73,43 @@ namespace EthermineBotTelegram
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ static async void GetActualData(MessageEventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var url = "https://api.ethermine.org/miner/" + e.Message.Text.Substring(8) + "/currentStats";
|
|
|
+ var currnentStats = _download_serialized_json_data<jsonCurrnentStats>(url);
|
|
|
+ await botClient.SendTextMessageAsync(
|
|
|
+ chatId: e.Message.Chat,
|
|
|
+ text: "Updated: " + DateTimeOffset.FromUnixTimeSeconds(currnentStats.data.time).LocalDateTime.ToString("f") + "\n"
|
|
|
+ + "Reported Hashrate: " + Math.Round(currnentStats.data.reportedHashrate / 1000000D, 3) +
|
|
|
+ " MH/s\n"
|
|
|
+ + "Current Hashrate: " + Math.Round(currnentStats.data.currentHashrate / 1000000D, 3) +
|
|
|
+ " MH/s\n"
|
|
|
+ + "Valid Shares: " + currnentStats.data.validShares + "\n"
|
|
|
+ + "Stale Shares: " + currnentStats.data.staleShares + "\n"
|
|
|
+ + "Unpaid Balance: " + Math.Round(currnentStats.data.unpaid / Math.Pow(10, 18), 5) + " ETH\n");
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+ await botClient.SendTextMessageAsync(
|
|
|
+ chatId: e.Message.Chat,
|
|
|
+ text: "Something got wrong! Check entered wallet or try later.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private static T _download_serialized_json_data<T>(string url) where T : new() {
|
|
|
+ using (var w = new WebClient()) {
|
|
|
+ var jsonData = string.Empty;
|
|
|
+ // attempt to download JSON data as a string
|
|
|
+ try
|
|
|
+ {
|
|
|
+ jsonData = w.DownloadString(url);
|
|
|
+ }
|
|
|
+ catch (Exception) { }
|
|
|
+ // if string with JSON data is not empty, deserialize it to class and return its instance
|
|
|
+ return !string.IsNullOrEmpty(jsonData) ? JsonConvert.DeserializeObject<T>(jsonData) : new T();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|