// ==UserScript==
// @name 佐々木bot
// @namespace http://tampermonkey.net/
// @version 0.7
// @description try to take over the world!
// @author You
// @match *.x-feeder.info/*/
// @exclude *.x-feeder.info/*/sp*
// @exclude *.x-feeder.info/*/settings/**
// @require https://greasyfork.org/scripts/396472-yaju1919/code/yaju1919.js?version=802405
// @require https://greasyfork.org/scripts/388005-managed-extensions/code/Managed_Extensions.js?version=720959
// @grant GM.setValue
// @grant GM.getValue
// @grant GM.xmlHttpRequest
// ==/UserScript==
(function(){
'use strict';
function setCookie(c_name,value,expiredays){
// pathの指定
var path = location.pathname;
// pathをフォルダ毎に指定する場合のIE対策
var paths = new Array();
paths = path.split("/");
if(paths[paths.length-1] != ""){
paths[paths.length-1] = "";
path = paths.join("/");
}
// 有効期限の日付
var extime = new Date().getTime();
var cltime = new Date(extime + (60*60*24*1000*expiredays));
var exdate = cltime.toUTCString();
// クッキーに保存する文字列を生成
var s = "";
s += c_name + "=" + value;// 値はエンコードしない
s += "; path=" + path;
if(expiredays){
s += "; expires=" +exdate+"; ";
}else{
s += "; ";
}
// クッキーに保存
document.cookie=s;
}
var input_time_min, input_time_max, atrandom_flag, run_flag, btn_holder;
win.Managed_Extensions["佐々木bot"] = {
config: ()=>{
const h = $("<div>");
$("<div>").text("メッセ送信間隔[秒]").appendTo(h);
input_time_min = yaju1919.addInputNumber(h,{
placeholder: "最小",
min: 10,
max: 500,
value: 30,
save: 'min',
int: true
});
$("<div>").text("~").appendTo(h);
input_time_max = yaju1919.addInputNumber(h,{
placeholder: "最大",
min: 10,
max: 500,
value: 60,
save: 'max',
int: true
});
h.append("<br>");
atrandom_flag = yaju1919.addInputBool(h,{
title: "無差別モード",
});
h.append("<br>");
h.append("<br>");
btn_holder = $("<div>").appendTo(h);
run_flag = yaju1919.addInputBool(btn_holder,{
title: "run",
change: function(v){
if(v) main();
}
});
return h;
},
};
//------------------
const _ = str => {
console.warn(`${str} ${yaju1919.getTime()}`);
};
let cnt = 0,
cnt_sid = 0;
const main = () => {
setCookie("sid",'',0);
if(cnt++ % 3){
main2();
setTimeout(main, yaju1919.randInt(input_time_min(),input_time_max()) * 1000);
}
else {
GM.xmlHttpRequest({
method: "GET",
url: location.href,
onload: r => {
if(!run_flag()) return;
var hds = r.responseHeaders;
var m = hds.match(/sid/);
if(!m) return _("sidが見つかりませんでした。"); // sidが無い
_(`${++cnt_sid}回目 sidを新規発行しました。`);
var sid = hds.slice(m.index + 4).match(/[0-9a-zA-Z]+/)[0];
setCookie("sid",sid,0);
main2();
setTimeout(main, yaju1919.randInt(input_time_min(),input_time_max()) * 1000);
},
});
}
};
let targetId, ignore = [], exp = 0, level2exp = 10;
function main2(){
var ids = Object.keys(unsafeWindow.onlineUsers);
if(ids.filter(v=>all_ids.indexOf(v)===-1).length) selectNewTarget();
if(targetId){
if(ids.indexOf(targetId) === -1) {
selectNewTarget();
}
}
else {
selectNewTarget();
}
var level;
if(exp === 0) level = 1;
else if(exp < level2exp) level = 2;
else if(exp < level2exp * 2) level = 3;
else {
selectNewTarget();
}
exp++;
if(!targetId) return _("送る相手が存在しない");
sendMessage(getIdiomLevel(level),targetId);
}
const all_ids = [];
function selectNewTarget(){
if(targetId) ignore.push(targetId);
targetId = null;
var myId = unsafeWindow.sessionId;
var ids = Object.keys(unsafeWindow.onlineUsers);
var select_ids = ids.filter(v=>{
if(v === myId) return;
if(ignore.indexOf(v) !== -1 && atrandom_flag() === false) return;
if(unsafeWindow.onlineUsers[v].name.indexOf("きょーた") !== -1) return;
return v;
});
if(!ids.length) {
_("botを停止させます。");
return btn_holder.find("button").click().trigger('change');
}
const first_ids = [];
ids.forEach(function(v){
if(all_ids.indexOf(v) === -1) {
first_ids.push(v);
all_ids.push(v);
}
});
targetId = first_ids.length ? yaju1919.randArray(first_ids) : yaju1919.randArray(select_ids);
idiom_log = [];
exp = 0;
level2exp = yaju1919.randInt(5,10);
}
function sendMessage(str,id){
if(!str || !id) return;
$.post(location.href + "message.php",{
receiver_id: id,
receiver_name: '',
message_body: str.split('').join('\0'),
hide_name: 0,
});
_(`${id} に送信 ${str}`);
}
const GOBI = '#heart#';
const idiom = { // 出会い厨語録
1: [ // 序盤
"こんにちは かわいいね",
].concat(new Array(50).fill().map(v=>"女の子?")),
2: [ // 中盤
"男の子?",
"何歳?",
"気になった",
"名前は?けんた",
"下の名前は?",
"どこ住んでる?愛知です",
"愛知県の21歳です"+GOBI,
"彼女欲しいです"+GOBI,
"僕と付き合おう"+GOBI,
"付き合って"+GOBI,
"付き合おう"+GOBI,
"僕と結婚してくれる?",
"胸何カップ?",
"付き合って?",
"彼氏欲しいよね?",
"好き",
GOBI,
],
3: [ // 終盤
"好き",
GOBI,
"何で嫌?",
"お願い",
"気持ちよくするから",
"気持ちよくするからだめ?",
"セックスしない?",
"せっくすしよ"+GOBI,
"SEXしよ"+GOBI,
"Hしよ",
"僕の童貞を奪ってください"+GOBI,
"乳首舐めていい?",
"妊娠させていい?",
]
}
let idiom_log = [], level = 0;
function getIdiomLevel(level){
idiom_log.unshift(yaju1919.randArray(idiom[String(level)].filter(v=>idiom_log.indexOf(v)===-1)));
return idiom_log[0].replace(GOBI, yaju1919.randArray(["❤️","♡","♥"]));
}
})();