public async Task CallReplyAsync(VtuberEntity vtuber, TweetInfo tweet)
 {
     using (var client = HttpClientExtensions.CreateClient())
     {
         var body = new TwitterCallbackBody()
         {
             VtuberName        = vtuber.OriginalName,
             Content           = tweet.Content,
             IsReply           = tweet.IsReply,
             PublishTime       = tweet.CreateTime.ToTimestamp(),
             ReplyScreenName   = tweet.ReplyScreenname,
             RetweetedUsername = tweet.RetweetedTweet?.User?.Name,
             Sign = Sign
         };
         await client.PostJsonAsync(Url + "tweet/reply", body);
     }
 }
 public void CallReplyTweet(TwitterCallbackBody body)
 {
     InsertEventLog($"[{DateTimeExtensions.TimestampToDateTime(body.PublishTime):yyyy-MM-dd HH:mm:ss}] Vtuber [{body.VtuberName}] 回复了 {body.ReplyScreenName} 的推特: {body.Content}");
     foreach (var vtuberBot in Bots)
     {
         var groups = vtuberBot.GetGroupsAsync().GetAwaiter().GetResult();
         if (groups == null)
         {
             continue;
         }
         foreach (var groupInfo in groups)
         {
             var config = Config.DefaultConfig.GroupConfigs.FirstOrDefault(v => v.GroupId == groupInfo.GroupId)
                          ?.PublishConfigs.FirstOrDefault(v => v.VtuberName == body.VtuberName);
             if (config == null || !config.ReplyTweet)
             {
                 continue;
             }
             vtuberBot.GetSendingService().SendGroupMessageAsync(groupInfo.GroupId,
                                                                 $"{body.VtuberName} 在 {DateTimeExtensions.TimestampToDateTime(body.PublishTime):yyyy-MM-dd HH:mm:ss} 回复了 {body.ReplyScreenName} 的推特:\r\n{body.Content}")
             .GetAwaiter().GetResult();
         }
     }
 }