private async IAsyncEnumerable <MessageResponse> TransferCoreAsync(UserInfo sender, UserInfo receiver, decimal amount, string symbol) { symbol = symbol.ToUpperInvariant(); var content = $@"转账方:[{sender.Name}]({_matatakiService.GetUserPageUrl(sender.Id)}) 被转账方:[{receiver.Name}]({_matatakiService.GetUserPageUrl(receiver.Id)}) 转账数目:{amount} {symbol}"; yield return(new MessageResponse("转账交易进行中...", content, parseMode: ParseMode.Markdown)); MessageResponse finalResponse; try { var hash = await _matatakiService.TransferAsync(sender.Id, receiver.Id, amount, symbol); finalResponse = new MessageResponse("*转账成功*", content, parseMode: ParseMode.Markdown).WithInlineButtons( InlineButton.WithUrl("交易详情", "https://rinkeby.etherscan.io/tx/" + hash) ); } catch { finalResponse = new MessageResponse("*转账失败*", content, parseMode: ParseMode.Markdown); } yield return(finalResponse); }
public async Task <MessageResponse> Handle(Message message) { var builder = new StringBuilder(); UserInfo?user = null; try { user = await _backendService.GetUserByTelegramIdAsync(message.From.Id); builder.AppendLine($"瞬Matataki 昵称: [{user.Name}]({_matatakiService.GetUserPageUrl(user.Id)})"); } catch { builder.AppendLine("没有绑定 Matataki"); } if (user?.IssuedTokens?.Length > 0) { var token = user.IssuedTokens[0]; builder.AppendLine($"Fan票 名称:[{token.Symbol} ({token.Name})]({_matatakiService.GetTokenPageUrl(user.IssuedTokens[0].Id)})"); } else { builder.AppendLine("没有发行 Fan 票"); } return(Markdown(builder.ToString())); }