まず初めに
投稿者は素人質問が飛んで来たらその場で地団駄を踏んで泣き崩れるくらいの技術力なので結構間違ったことを書くかもしれないし、自分でもよくわかってないので温かい目で見てください。
なんでそんなもの作ったんだ…
自分にもわかりません。ほんと。誰も幸せにならない…けど思いついてしまったし某ハッカソンでチームメンバーから学んだ技術を生かしたい。そんな思いで作ることになりました。
環境
discord.js v14.13.0
node.js v18.18.0
さて作ろうか
作ります。
なにすればいいんだ…
某ハッカソンでは原型をすべて友人が作成していてコマンド部分しか知見を得ていなかったため何をすればいいかわからない…
とりあえずググる
原型はつよいひとと友人に提供してもらった
index.js
(main),deploy-commmads.js
はつよいひとをみならって自分でいろいろいじった。
主な機能
きたる12/24。Xmas前夜にクリスマスがやってこない場合
('ε' )くー
('ㅂ' ) り
('ε' )す
('□' )ま
('ε' )す
('□' )が
('ロ' )こ
('ロ' )と
('ㅂ' )し
('ロ' )も
('□' )やーっ
('ㅂ' )て
('ロ' )こ
('□' )な
('ㅂ' )い
('-' )
を
クリスマスがやってくる場合
('ε' )くー
('ㅂ' ) り
('ε' )す
('□' )ま
('ε' )す
('□' )が
('ロ' )こ
('ロ' )と
('ㅂ' )し
('ロ' )も
('□' )やーっ
('ㅂ' )て
('ε' )く
☝(^ε^ )☝るぅ
をコマンドを実行したチャンネルに送りつけます。
jsonにメッセージを送信するのかしないのか、またクリスマスがくるのかこないのかの情報が入ってます。
それらをコマンドを使って変更してます
意味が分からない
考えるな感じろ
メインの機能に使った技術
node-cronをつかって毎年12/24の0時にこのメッセージを送りつけるようにしました
cron.schedule("0 0 0 24 12 *", async () => {
if(data.com === true){
//ここにメッセージがある
}
else if(data.come === false){
//ここにメッセージがある
}
}
cron.scheduleの""
の中身は"秒 分 時 日 月 曜日"
です。
"* * * * * *"
にしたりすると毎秒メッセージを送りつけるほんとにテロみたいなbotになります。
"1,3,10,15 * * * * *"
のようにすると毎1,3,10,15秒に実行されるようにできます。おもしろい!
動作確認するときは"* * * * *"
にして一分ごとに実行してました。
その他はdisocrd.jsに入ってるナニヤラを使ってます。
文献が多くてとても書きやすかったです。
Botのコマンド
- /set-message
- クリスマスイブにメッセージを送信するかどうかの設定を行います。
trueなら送信、falseなら送信しません。
- クリスマスイブにメッセージを送信するかどうかの設定を行います。
- /set-come-xmas
今後の発展
- メッセージを送信して1h以内の怒りのメッセージに対して煽ったりする機能
- 某クリスマスソングのリズムに合わせてメッセージを送信できるようにする
- DMでできるようにしても面白いと思った
さいごに
初心者ながら頑張って作ったdiscordBotに関するお話でした。
友達がつよつよでわからない部分を聞いたら快く教えてくれて本当に助かりました。本当に良い友人を持ったと思います。
次はもっと機能も仕様もちゃんとしたものを作りたいです。
....いつになったらクリスマスは来るんだ