Skip to content

Commit 1bcc4fa

Browse files
committed
增加公共黑名单、兑换完成后查询最新余额
1 parent 3b66282 commit 1bcc4fa

5 files changed

Lines changed: 73 additions & 16 deletions

File tree

src/Telegram.CoinConvertBot/BgServices/BotHandler/UpdateHandlers.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ async Task<Message> PriceTRX(ITelegramBotClient botClient, Message message)
306306
//通用回复
307307
static async Task<Message> Start(ITelegramBotClient botClient, Message message)
308308
{
309+
var HideGithub = configuration.GetValue("HideGithub", false);
309310
string usage = @$"欢迎使用货币兑换服务!
310311
当前支持兑换以下币种:
311312
<code>USDT-TRC20 --> TRX</code>
@@ -315,7 +316,15 @@ static async Task<Message> Start(ITelegramBotClient botClient, Message message)
315316
316317
如有需要,请联系管理员: {AdminUserUrl}
317318
";
319+
if (HideGithub)
320+
{
321+
usage = @$"欢迎使用货币兑换服务!
322+
当前支持兑换以下币种:
323+
<code>USDT-TRC20 --> TRX</code>
318324
325+
如有需要,请联系管理员: {AdminUserUrl}
326+
";
327+
}
319328
return await botClient.SendTextMessageAsync(chatId: message.Chat.Id,
320329
text: usage,
321330
parseMode: ParseMode.Html,

src/Telegram.CoinConvertBot/BgServices/TransferTrxService.cs

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,14 @@ protected override async Task ExecuteAsync()
5454
{
5555
return;
5656
}
57+
#region 黑名单地址处理
5758
var BlackList = _configuration.GetSection("BlackList").Get<string[]>() ?? new string[0];
59+
var PublicBlackList = _configuration.GetSection("PublicBlackList").Get<List<PublicBlackList>>() ?? new List<PublicBlackList>();
60+
BlackList = BlackList.Concat(PublicBlackList.Select(x => x.Address)).Distinct().ToArray();
61+
#endregion
62+
var start = DateTime.Now.AddDays(-1);//仅查询一天内的交易
5863
var Orders = await _repository
64+
.Where(x => x.CreateTime >= start)
5965
.Where(x => x.OriginalCurrency == Currency.USDT)
6066
.Where(x => x.Status == Status.Pending)
6167
.Where(x => x.OriginalAmount >= UpdateHandlers.MinUSDT)
@@ -154,15 +160,6 @@ await _botClient.SendTextMessageAsync(bind.UserId, $@"<b>我们已向您发送{r
154160
}
155161
if (AdminUserId > 0)
156162
{
157-
var _myTronConfig = provider.GetRequiredService<IOptionsSnapshot<MyTronConfig>>();
158-
var _wallet = provider.GetRequiredService<IWalletClient>();
159-
var protocol = _wallet.GetProtocol();
160-
var addr = _wallet.ParseAddress(_myTronConfig.Value.Address);
161-
var account = await protocol.GetAccountAsync(new TronNet.Protocol.Account
162-
{
163-
Address = addr
164-
});
165-
var TRX = Convert.ToDecimal(account.Balance) / 1_000_000L;
166163

167164
await _botClient.SendTextMessageAsync(AdminUserId, $@"<b>{record.ConvertCurrency}出账通知!({record.OriginalAmount:#.######} {record.OriginalCurrency} -> {record.ConvertAmount:#.######} {record.ConvertCurrency})</b>
168165
@@ -171,10 +168,32 @@ await _botClient.SendTextMessageAsync(AdminUserId, $@"<b>{record.ConvertCurrency
171168
转出:<b>{record.ConvertAmount:#.######} {record.ConvertCurrency}</b>
172169
时间:<b>{record.PayTime:yyyy-MM-dd HH:mm:ss}</b>
173170
地址:<code>{record.FromAddress}</code>
174-
-----------------------------
175-
余额:<b>{TRX} TRX</b>
176-
已用带宽:<b>{account.FreeNetUsage + account.NetUsage}</b>
177171
", Bot.Types.Enums.ParseMode.Html, replyMarkup: inlineKeyboard);
172+
#pragma warning disable CS4014
173+
Task.Run(async () =>
174+
{
175+
await Task.Delay(5000);//确保数据准确,延迟5秒再查询
176+
var _myTronConfig = provider.GetRequiredService<IOptionsSnapshot<MyTronConfig>>();
177+
var _wallet = provider.GetRequiredService<IWalletClient>();
178+
var _contractClientFactory = provider.GetRequiredService<IContractClientFactory>();
179+
var protocol = _wallet.GetProtocol();
180+
var addr = _wallet.ParseAddress(_myTronConfig.Value.Address);
181+
var account = await protocol.GetAccountAsync(new TronNet.Protocol.Account
182+
{
183+
Address = addr
184+
});
185+
var TRX = Convert.ToDecimal(account.Balance) / 1_000_000L;
186+
var contractAddress = _myTronConfig.Value.USDTContractAddress;
187+
var contractClient = _contractClientFactory.CreateClient(ContractProtocol.TRC20);
188+
var USDT = await contractClient.BalanceOfAsync(contractAddress, _wallet.GetAccount(_myTronConfig.Value.PrivateKey));
189+
190+
await _botClient.SendTextMessageAsync(AdminUserId, $@"<b>当前余额</b>
191+
192+
TRX余额:<b>{TRX} TRX</b>
193+
USDT余额:<b>{USDT} USDT</b>
194+
", Bot.Types.Enums.ParseMode.Html, replyMarkup: inlineKeyboard);
195+
});
196+
#pragma warning restore CS4014
178197
}
179198
}
180199
else
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Telegram.CoinConvertBot.Models
8+
{
9+
public class PublicBlackList
10+
{
11+
public string Name { get; set; }
12+
public string Address { get; set; }
13+
}
14+
}

src/Telegram.CoinConvertBot/Program.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
using Flurl.Http;
23
using FreeSql;
34
using FreeSql.DataAnnotations;
45
using Microsoft.Extensions.Configuration;
@@ -15,14 +16,27 @@
1516
using Telegram.CoinConvertBot.Domains;
1617
using Telegram.CoinConvertBot.Models;
1718
using TronNet;
19+
using static TronNet.Protocol.Transaction.Types;
20+
21+
const string Version = "v1.0.6";
1822

1923
Log.Logger = new LoggerConfiguration()
2024
.MinimumLevel.Information()
2125
.WriteTo.Console()
2226
.CreateBootstrapLogger();
23-
27+
Serilog.Log.Information("当前版本:{result}", Version);
28+
if (!System.IO.File.Exists("BlackList.json") || (DateTime.Now - System.IO.File.GetLastWriteTime("BlackList.json")).TotalDays > 1)
29+
{
30+
var result = await "https://raw.githubusercontent.com/LightCountry/CoinConvertBot/master/json/BlackList.json"
31+
.DownloadFileAsync("./");
32+
Serilog.Log.Information("下载公共黑名单地址:{result}", result);
33+
}
34+
else
35+
{
36+
Serilog.Log.Information("无需更新公共黑名单地址");
37+
}
2438
var host = Host.CreateDefaultBuilder(args);
25-
39+
host.ConfigureAppConfiguration(config => config.AddJsonFile("BlackList.json", optional: false, reloadOnChange: true));
2640
host.UseSerilog((context, services, configuration) => configuration
2741
.ReadFrom.Configuration(context.Configuration)
2842
.ReadFrom.Services(services)
@@ -97,7 +111,7 @@ static void ConfigureServices(HostBuilderContext Context, IServiceCollection Ser
97111
Log.Logger.Information("开始{UseProxy}连接Telegram服务器...", (useProxy ? "使用代理" : "不使用代理"));
98112
var me = botClient.GetMeAsync().GetAwaiter().GetResult();
99113
UpdateHandlers.BotUserName = me.Username;
100-
var SetDefaultMenu = Configuration.GetValue<bool>("SetDefaultMenu");
114+
var SetDefaultMenu = Configuration.GetValue<bool>("SetDefaultMenu", true);
101115
if (SetDefaultMenu)
102116
{
103117
botClient.SetMyCommandsAsync(new BotCommand[]

src/Telegram.CoinConvertBot/appsettings.Example.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,6 @@
4242
"USDTFeeRate": 0, //USDT手续费,设置0.01表示抽成1%,不足1U扣1U,设为0时不扣此项手续费
4343
"SendTo": 0, //目标群组的TG ID,通常是一个很大的负数 可以将@QueryCoinBot拉入群,发送查id获取群id
4444
"BlackList": [ "Txx1" ], //黑名单地址,不处理此地址的兑换请求,多个地址以逗号隔开
45-
"SetDefaultMenu": true //设置默认菜单,机器人初始菜单
45+
"SetDefaultMenu": true, //设置默认菜单,机器人初始菜单
46+
"HideGithub": false //隐藏/start的项目宣传
4647
}

0 commit comments

Comments
 (0)