Greasy Fork is available in English.

[bot-manager]botマネージャー ( ヒマチャット版 )

複数のbotを管理します。

Fra 2019-07-20 12:16:38 UTC. Se den seneste versjonen.

// ==UserScript==
// @name         [bot-manager]botマネージャー ( ヒマチャット版 )
// @namespace    http://tampermonkey.net/
// @version      0.9
// @description  複数のbotを管理します。
// @author       You
// @match        http://www.himachat.com/
// @require      https://code.jquery.com/jquery-3.4.1.min.js
// @require      https://greasyfork.org/scripts/387509-yaju1919-library/code/yaju1919_library.js?version=718325
// @require      https://greasyfork.org/scripts/387372-chatbot/code/Chatbot.js?version=718496
// @grant        GM.setValue
// @grant        GM.getValue
// ==/UserScript==
(function () {
  'use strict';
    //---------------------------------------------------------------------------------
    const getMyName = () => $("#myname").text().trim(); // 自分の名前を取得
    //---------------------------------------------------------------------------------
    const getNewPost = () => { // 一番上の投稿を取得
        const top = $(".coment").eq(0);
        const name = top.find(".name").text().trim();
        let text = top.find(".allblack").text().trim();
        if(/photo/.test(top.find(".mozi").attr("id"))) text = "[P:114514]";
        const id = top.find("small").text();
        return {id:id,name:name,text:text};
    };
    //---------------------------------------------------------------------------------
    const post = str => {
        if(str.length > 150) return;
        $(".formbar").val(str);
        $(".formbar").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 = array => array[Math.floor(Math.random() * array.length)]; // ランダムな要素を返す
    //---------------------------------------------------------------------------------
    let id_log = 0;
    const entered_array = [];
    const greet = () =>{ // 自動挨拶
        const now = $(".syscoment").eq(0).text();
        const id = now;
        if(id === id_log) return;
        id_log = id;
        const m = now.match(/^(.*)さん.*([入退])/);
        if(!m) return;
        const name = m[1];
        if(name === getMyName()) return;
        const enter = m[2];
        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 holder = $("<div>");
    const BeforePlace = $("#keikokuspace");
    BeforePlace.before(holder);
    appendChatbotManager(holder,{
        update: update,
        post: post,
        greet: greet,
        auto: auto
    });
})();