123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- 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
- {
- static ITelegramBotClient botClient;
- static void Main(string[] args)
- {
- botClient = new TelegramBotClient("1785154817:AAGhXD9yQVn9HPdWTcmGJUBeZ8nA50SzHbY");
- var me = botClient.GetMeAsync().Result;
- Console.WriteLine(
- $"Hello, World! I am user {me.Id} and my name is {me.FirstName}."
- );
- botClient.OnMessage += BotOnMessage;
- botClient.StartReceiving();
- Console.WriteLine("Press any key to exit");
- Console.ReadKey();
- botClient.StopReceiving();
- }
-
- static async void BotOnMessage(object sender, MessageEventArgs e) {
- if (e.Message.Text != null)
- {
- Console.WriteLine($"Received a text message in chat {e.Message.Chat.Id}.");
- var message = e.Message;
- if (message == null || message.Type != MessageType.Text)
- return;
-
- switch (message.Text.Split(' ').First())
- {
- // add user into database
- case "/start":
- //await AddUser(e.Message.Chat);
- break;
-
- // connect wallet to user
- case "/setwallet":
- //await SetWallet(message);
- break;
- // get actual data from ethermine
- case "/actual":
- GetActualData(e);
- break;
-
- // send help
- case "/help":
- //await SendHelp();
- break;
-
- default:
- //await Usage(message);
- await botClient.SendTextMessageAsync(
- chatId: e.Message.Chat,
- text: "Incorrect message");
- break;
- }
- }
- }
- 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();
- }
- }
- }
- }
|