N高生ってこのネタ好きだよなぁ...人のこと言えないが。
はじめに
@Nemesisさんの「Javaで湯婆婆を実装してみる」が話題なので、実際にDiscord上で「名前を奪ってみようと」思います。
要件整理
Discordの場合、契約書も何も、全部名乗ってから喋ってるので契約書は交わす必要はない。
ということで以下の動作をするBOTを作る。
- 湯婆婆宛にメンション
- 例の文章を言われ
名前を奪われるニックネームを変更される
あとついでに、ステータスも表示させてみる。
お仕事をプレイ中…なんかヤバそう
① 下準備
この記事通りにセットアップしてみた。
誰でも作れる!Discord Bot(基礎編) - EOiさん
② server.jsをいじる
とりあえずこんな感じに実装してみた。
server.js
//略
client.on('ready', message =>{
console.log('フン。ようやく準備ができたのかい。');
client.user.setActivity('お仕事');
});
client.on('message', message =>{
if (message.author.id == client.user.id){
return;
}
if(message.isMemberMentioned(client.user)){
console.log(message.author.id);
var text = "フン。<@" + message.author.id + ">というのかい。贅沢な名だねぇ。";
message.channel.send(text);
const random = Math.round(Math.random() * (message.member.displayName).length);
let newName = (message.member.displayName).substr(random, 1);
message.guild.member(message.author.id).setNickname(newName);
console.log(newName);
text = "今からお前の名前は<@!" + message.author.id + ">だ。いいかい、<@!" + message.author.id + ">だよ。分かったら返事をするんだ、<@!" + message.author.id + ">!!";
message.channel.send(text);
return;
}
});
//略
③ 実行してみる
うまく行った
困りごと
湯婆婆よりも上位権限のロールがついている人相手には、名前が奪えない。
湯婆婆が上司から名前を奪ったらそれはそれで社会問題になるので、この問題はスルーするとしよう。
終わりに
ネタでした。
湯婆婆BOTはここからサーバーインポートできます。
湯婆婆BOT