Beispiel #1
0
        public override async Task <bool> OnTimelineAsync(IPost n, IShell shell, Server core)
        {
            var s    = core.GetMyStorage();
            var list = s.Get(CitrineIntegrationInteractedNoteIds, new List <string>());
            var post = n.Repost is not null ? n.Repost : n;

            // 既に反応していれば関わらない
            if (list.Contains(post.Id))
            {
                return(false);
            }
            // テキスト一致判定
            var isMatch = Keywords.Contains(post.Text?.Trim());
            // うちの子ファミリーのbotであるかどうかの雑判定
            // 名前一致と同一ホストかどうかの判定
            var isFamily = post.User.Name.ToLowerInvariant() == "kaho" && string.IsNullOrEmpty(post.User.Host);

            if (isMatch && isFamily)
            {
                // 既に反応したノートとしてリストアップする
                list.Add(post.Id);
                s.Set(CitrineIntegrationInteractedNoteIds, list);
                await Task.Delay(1200);

                await shell.RepostAsync(post);

                await Task.Delay(800);

                await shell.FollowAsync(post.User);
            }
            return(false);
        }
Beispiel #2
0
        public override async Task <bool> ActivateAsync(IPost n, IShell shell, Server core)
        {
            if (n.Text == null)
            {
                return(false);
            }
            if (n.Text.IsMatch("フォロ[ーバ](バック)?し"))
            {
                if (core.GetRatingOf(n.User) == Rating.Hate)
                {
                    return(true);
                }
                core.LikeWithLimited(n.User);
                await shell.FollowAsync(n.User);

                await shell.ReactAsync(n, "✌️");

                return(true);
            }
            if (n.Text.IsMatch("フォロ[ーバ](バック)?(解除|外し|[や辞]め)"))
            {
                core.LikeWithLimited(n.User);
                await shell.UnfollowAsync(n.User);

                await shell.ReactAsync(n, "👋");

                return(true);
            }
            return(false);
        }
Beispiel #3
0
        public override async Task <bool> OnFollowedAsync(IUser user, IShell shell, Server core)
        {
            if (core.GetRatingOf(user) == Rating.Hate)
            {
                return(true);
            }
            core.LikeWithLimited(user);
            await shell.FollowAsync(user);

            return(false);
        }
Beispiel #4
0
        public override async Task <bool> OnFollowedAsync(IUser user, IShell shell, Server core)
        {
            await shell.FollowAsync(user);

            return(false);
        }