Beispiel #1
0
        public void AddVtuberCommand(MessageInfo message, string[] args)
        {
            var vtb = Config.DefaultConfig.GetVtuber(args[2]);

            if (vtb != null)
            {
                _service.SendToGroup(message.GroupNumber, "已存在该Vtuber");
                return;
            }

            var streamers = HiyokoApi.SearchStreamer(args[2]);

            if (streamers.Count != 1)
            {
                _service.SendToGroup(message.GroupNumber, "无法找到" + args[2]);
                return;
            }

            var streamer = streamers.First();

            vtb = new VtuberInfo()
            {
                OriginalName     = streamer.Name,
                TwitterProfileId = streamer.TwitterId,
                YoutubeChannelId = streamer.Channels.FirstOrDefault(v => v.ChannelType == 1)?.ChannelId,
                HiyokoProfileId  = streamer.Name
            };
            Config.DefaultConfig.Vtubers.Add(vtb);
            Config.SaveToDefaultFile(Config.DefaultConfig);
            _service.SendToGroup(message.GroupNumber, "已根据互联网相关资料添加: " + args[2] + "\r\n可使用!Vtuber set修改");
            _service.SendToGroup(message.GroupNumber, $"Vtuber相关信息: \r\n" +
                                 $"原名: {streamer.Name}\r\n" +
                                 $"推特主页: https://twitter.com/{streamer.TwitterId}\r\n" +
                                 $"Youtube频道: https://www.youtube.com/channel/{streamer.Channels.FirstOrDefault(v => v.ChannelType == 1)?.ChannelId}");
        }
        public async void AddVtuberCommand(AcceptedMessage message, string[] args)
        {
            try
            {
                var vtuberName = string.Join(" ", args.Skip(2));
                var vtuber     = await GetVtuberAsync(vtuberName);

                if (vtuber != null)
                {
                    await SendingService.SendGroupMessageAsync(message.FromGroup, "已存在 " + vtuberName);

                    return;
                }

                await SendingService.SendGroupMessageAsync(message.FromGroup, "正在搜索, 这可能需要一段时间.");

                var streamers = HiyokoApi.SearchStreamer(vtuberName);
                if (streamers.Count == 0)
                {
                    await SendingService.SendGroupMessageAsync(message.FromGroup, "无法找到: " + vtuberName);

                    return;
                }

                var streamer        = streamers.First();
                var bilibiliChannel = streamer.Channels.FirstOrDefault(v => v.ChannelType == 6)?.ChannelId?
                                      .Replace("BL_", string.Empty);
                if (await GetVtuberAsync(streamer.Name) != null)
                {
                    await SendingService.SendGroupMessageAsync(message.FromGroup, "已存在 " + vtuberName);

                    return;
                }
                var entity = new VtuberEntity()
                {
                    OriginalName     = streamer.Name,
                    TwitterProfileId = streamer.TwitterId,
                    YoutubeChannelId = streamer.Channels.FirstOrDefault(v => v.ChannelType == 1)?.ChannelId,
                    HiyokoProfileId  = streamer.Name,
                    BilibiliUserId   = string.IsNullOrEmpty(bilibiliChannel) ? 0 : long.Parse(bilibiliChannel)
                };
                var userlocalVtuber = (await UserlocalApi.SearchAsync(vtuberName).Retry(5))
                                      .Select(v => UserlocalApi.GetVtuberInfoAsync(v.Id).Retry(5).GetAwaiter().GetResult()).FirstOrDefault(
                    v =>
                {
                    if (v.ChannelLink.EndsWith("/"))
                    {
                        v.ChannelLink = v.ChannelLink.Substring(0, v.ChannelLink.Length - 1);
                    }
                    return(v.ChannelLink.Split('/').Last() == entity.YoutubeChannelId);
                });
                if (userlocalVtuber != null)
                {
                    entity.Group            = userlocalVtuber.OfficeName;
                    entity.UserlocalProfile = userlocalVtuber.Id;
                }

                await _vtuberCollection.InsertOneAsync(entity);

                await SendingService.SendGroupMessageAsync(message.FromGroup,
                                                           "已根据互联网相关资料添加: " + vtuberName + "\r\n可使用!Vtuber set修改");

                await SendingService.SendGroupMessageAsync(message.FromGroup, $"Vtuber相关信息: \r\n" +
                                                           $"原名: {streamer.Name}\r\n" +
                                                           $"推特主页: https://twitter.com/{streamer.TwitterId}\r\n" +
                                                           $"Youtube频道: https://www.youtube.com/channel/{streamer.Channels.FirstOrDefault(v => v.ChannelType == 1)?.ChannelId}\r\n" +
                                                           $"B站主页: https://space.bilibili.com/{entity.BilibiliUserId}\r\n" +
                                                           $"所属团体: {entity.Group}");
            }
            catch (Exception ex)
            {
                await SendingService.SendGroupMessageAsync(message.FromGroup, "添加vtuber时出现错误, 请重试或反馈, 错误信息: " + ex.Message);
            }
        }