Greasy Fork is available in English.

[bot-manager]botマネージャー ( ピクトセンス版 )

複数のbotを管理します。

// ==UserScript==
// @name         [bot-manager]botマネージャー ( ピクトセンス版 )
// @namespace    http://tampermonkey.net/
// @version      1.9
// @description  複数のbotを管理します。
// @author       You
// @match        https://pictsense.com/*
// @require      https://code.jquery.com/jquery-3.3.1.min.js
// @require      https://greasyfork.org/scripts/387509-yaju1919-library/code/yaju1919_library.js?version=727312
// @require      https://greasyfork.org/scripts/387372-chatbot/code/Chatbot.js?version=726700
// @grant        GM.setValue
// @grant        GM.getValue
// ==/UserScript==
(function () {
  'use strict';
    const yaju1919 = yaju1919_library;
    //---------------------------------------------------------------------------------
    const getMyName = () => input_myName() || $(".userName").last().text().replace(/さん$/,""); // 自分の名前を取得
    //---------------------------------------------------------------------------------
    const getNewPost = () => { // 一番上の投稿を取得
        const top = $(".chat").eq(0).clone();
        const name = top.find(".userName").text().trim();
        const id = Number(top.attr("data-time"));
        top.find(".userLabel").remove();
        top.find(".date").remove();
        const text = top.text().trim();
        return {id:id,name:name,text:text};
    };
    //---------------------------------------------------------------------------------
    const post = str => {
        if(str.length > 200) return;
        $("#chatText").val(str);
        $("#chatText").next().click();
    };
    //---------------------------------------------------------------------------------
    let logId = 0;
    const update = ()=>{ // 新しい発言内容の文字列を返す
        const post = getNewPost(); // 一番上;
        const topId = post.id;
        if(logId >= topId) return;
        logId = topId;
        const myName = getMyName();
        if(post.name === myName) return; // 自分だったら処理を終了
        return { name: post.name, text: post.text, myName: myName };
    };
    const rand = yaju1919.rand;
    //---------------------------------------------------------------------------------
    let id_log = 0;
    const entered_array = [];
    const greet = () =>{ // 自動挨拶
        const now = $(".sys").eq(0);
        const name = now.find(".userName").text().replace(/さん$/,"");
        if(name === getMyName()) return;
        const m = now.text().match(/([入退]室).*?$/);
        if(!m) return;
        const enter = m[1];
        const id = name + enter;
        if(id === id_log) return;
        id_log = id;
        let first_flag = false;
        if(entered_array.indexOf(name) === -1){
            entered_array.push(name);
            first_flag = true;
        }
        return enter === "入室" ? (
            first_flag ? rand([ // 初対面
                `${name}さん、はじめまして`,
                `${name}さんこんにちは`,
                `${name}さん、オッスオッス!`,
                `ご機嫌よう${name}さん`,
                `${name}さん、ゆっくりしていってね`,
                `グーテンモルゲン!${name}さん。`,
            ]) : rand([ // 2回目以降
                `${name}さん、おかえり`,
                `また来たの?${name}さん`,
                `【朗報】${name}さん帰還`,
                `お帰りなさいませ、${name}様`,
                `${name}さん久しぶり~`,
                `あら!いらっしゃいご無沙汰じゃないっすか!${name}さん`,
            ])
        ) : rand([ // 別れ
            `${name}さん、さようなら`,
            `バイバイ${name}さん`,
            `またね!${name}さん`,
            `${name}さん乙です。`,
            `Good Bye ${name}さん`,
            `${name}さん退室しちゃった。`,
        ]);
    };
    //---------------------------------------------------------------------------------
    const auto = () =>{ // 定期投稿
        return rand([
            '過疎',
            '放置',
            '憂鬱だなぁ…',
            '暇だなー',
            '暇定期',
            '腹減った',
            '眠い',
            '腹痛い',
            'もうこんな時間か',
            '・・・',
            'しーん',
            'とりあえず何か発言してみる',
            '潮が引いたように静寂が訪れた',
            'そして誰もいなくなった・・・',
            'この時間帯は人いないのかな?',
            "近所の犬うるさい",
            "(・ω・)",
            "(-_-).zZ乙",
            "_(:3」∠)_",
            rand([ // 定期発狂
                "\( 'ω')/ウオオオオオアアアーーーッ!",
                "(っ'ヮ'c)ウゥッヒョオアアァアアアァ",
                "( ^o^)<ンンンンンンンンンンンンンンンwww",
            ]),
        ]);
    };
    //---------------------------------------------------------------------------------
    const UI = appendChatbotManager({
        update: update,
        post: post,
        greet: greet,
        auto: auto
    });
    const input_myName = yaju1919.appendInputText(UI,{
        title: "自分の名前",
        placeholder: "自動取得に失敗した時ここで指定する",
        han: false
    });
})();