|
@@ -3,6 +3,7 @@ package main
|
|
|
import (
|
|
|
"fmt"
|
|
|
"math"
|
|
|
+ "strings"
|
|
|
|
|
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
|
|
|
|
|
@@ -10,38 +11,45 @@ import (
|
|
|
"GoEthemineTelegramBot/botsettings"
|
|
|
)
|
|
|
|
|
|
-func (c *Connection) UpdateData() {
|
|
|
+func UpdateData() {
|
|
|
LogInfo.Println("Updating data!")
|
|
|
|
|
|
- walletList, err := c.UniqueWallets()
|
|
|
+ walletList, err := dBConnector.UniqueWallets()
|
|
|
if err != nil {
|
|
|
LogError.Println(err); return
|
|
|
}
|
|
|
|
|
|
for _, wallet := range walletList {
|
|
|
- c.UpdateWallet(wallet)
|
|
|
+ UpdateWallet(wallet)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (c *Connection) UpdateWallet(wallet string) {
|
|
|
+func UpdateWallet(wallet string) {
|
|
|
LogInfo.Printf(">> Getting data for wallet %s\n", wallet)
|
|
|
LogInfo.Printf("From: %s/miner/%s/currentStats\n", botsettings.ApiUrl(), wallet)
|
|
|
|
|
|
// Get current stats for miner
|
|
|
currentStats, err := ethmineapi.MinerStats(botsettings.ApiUrl(), wallet)
|
|
|
if err != nil {
|
|
|
- LogWarn.Println(err); return
|
|
|
+ if strings.Contains(err.Error(), "no data for miner") {
|
|
|
+ LogWarn.Println(err)
|
|
|
+ } else {
|
|
|
+ LogError.Println(err)
|
|
|
+ }
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
if currentStats.Status != "OK" {
|
|
|
- LogError.Printf("Error getting response from pool for %s!\n", wallet); return
|
|
|
+ LogError.Printf("Error getting response from pool for %s!\n", wallet);
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// Line 42 of UpdateData.cs
|
|
|
// Search for the latest record for miner
|
|
|
- lastMinerRecord, err := c.LatestMinerRecord(wallet)
|
|
|
+ lastMinerRecord, err := dBConnector.LatestMinerRecord(wallet)
|
|
|
if err != nil {
|
|
|
- LogError.Println(err); return
|
|
|
+ LogError.Println(err)
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// Exist previous record with the same time
|
|
@@ -64,28 +72,35 @@ func (c *Connection) UpdateWallet(wallet string) {
|
|
|
Unpaid: currentStats.Data.Unpaid,
|
|
|
}
|
|
|
|
|
|
- result := c.GormDb.Create(&newMinerRecord)
|
|
|
+ result := dBConnector.GormDb.Create(&newMinerRecord)
|
|
|
if result.Error != nil {
|
|
|
LogError.Println(result.Error)
|
|
|
return
|
|
|
}
|
|
|
LogInfo.Printf("Added new row for miner %s\n", newMinerRecord.Wallet)
|
|
|
|
|
|
- // Line 54 of UpdateData.cs
|
|
|
- if lastMinerRecord != (Miner{}) && newMinerRecord.Unpaid < lastMinerRecord.Unpaid {
|
|
|
- walletChats, err := c.ChatsWithWallet(newMinerRecord.Wallet)
|
|
|
+ if (newMinerRecord.Unpaid < lastMinerRecord.Unpaid) {
|
|
|
+ err = NotifyChats(wallet)
|
|
|
if err != nil {
|
|
|
LogError.Println(err)
|
|
|
- } else {
|
|
|
- for _, chat := range walletChats {
|
|
|
- LogInfo.Println("Sended 'Payout detected!' message to chat ", chat)
|
|
|
- go myBotClient.Send(tgbotapi.NewMessage(chat, "Payout detected!"))
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
- c.UpdateWorkers(newMinerRecord, lastMinerRecord)
|
|
|
+
|
|
|
+ dBConnector.UpdateWorkers(newMinerRecord, lastMinerRecord)
|
|
|
}
|
|
|
|
|
|
+// at main... or somewhere else
|
|
|
+func NotifyChats(wallet string) (err error) {
|
|
|
+ walletChats, err := dBConnector.ChatsWithWallet(wallet)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ for _, chat := range walletChats {
|
|
|
+ LogInfo.Println("Sended 'Payout detected!' message to chat ", chat)
|
|
|
+ go myBotClient.Send(tgbotapi.NewMessage(chat, "Payout detected!"))
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
|
|
|
// UpdateWorkers updates data on workers of newMinerRecord
|
|
|
func (c *Connection) UpdateWorkers(newMinerRecord Miner, lastMinerRecord Miner) {
|
|
@@ -124,8 +139,6 @@ func (c *Connection) UpdateWorkers(newMinerRecord Miner, lastMinerRecord Miner)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// updateWorker updates data on workerData
|
|
|
func (c *Connection) updateWorker(workerData ethmineapi.WorkerData,
|
|
|
newMinerRecord Miner, lastMinerRecord Miner) {
|