Sigmoid_poke's memo

極稀に思ったことを書くだけの場所

discordの役職追加botの作り方メモ(node.js使用)

とりあえずサンプルの動作確認ができたのでメモとして
何のためにHOSTになっているのか分からないし

前提

Windowsしか知りません。
自分が管理者権限を持つDiscordサーバーでやること。

環境

・discordのアカウントを用意する.
・node.jsとdiscord.jsを適当にDL&インストールするだけ。(コマンドプロンプトでnode -vと打ってみてバージョンが出力されれば正しくインストールされています)
・PC版discordが手元にあると動作確認がしやすくて良き。

botの作成

Discord Developer Portalにアクセスして、右上あたりにあるボタンから新しいアプリケーションを作る。
・アプリケーションが作成できたら,それをクリックしてクライアントIDとクライアントシークレットを控える(誰にも見せないこと)。
・アイコンや名前は適宜設定する。
・左のタブからBotを選択し,botを追加しTokenをメモする(これも誰にも見せてはいけない)。
・下のほうにBotの権限を設定する場所があるので,必要な権限にチェックを入れて下に生成された数字をメモ(今回作ったのは考えるのが面倒だから管理者権限(=8)が付与してある)。

botをサーバーに入れる

以下のurlを、「クライアントID」と「権限」を上で求めたクライアントIDと権限にチェックを入れて得た数字に置き換えて踏む
https://discordapp.com/api/oauth2/authorize?client_id=「クライアントID」&permissions=「権限」&scope=bot
ジャンプ後にどのサーバーにbotを導入するかを聞かれるので選択し、権限を確認する。
f:id:poke_3_3_4:20200623151413p:plain
サーバーにbotがやってくるので、discordを開いて確認する。

botが動きやすくなるようにする

よく分からないdiscordの仕様として、ロールの付与等は操作を行う側が操作を行われる側よりも強い権限を持つ必要があるとか何とからしい(有識者の方がいれば教えて下さい)ので、botの地位を上げる。
何かしらの権限を持ったbotにはサーバーに入った段階で専用のロールが付与されているので、discordのサーバー設定からロールを開いて、botの役職を適切な位置まで上昇させる。f:id:poke_3_3_4:20200623152040p:plain

ようやくプログラミング

詳しいことはnode.jsとかでググってもらったほうが早いと思います。そもそも最初からググったほうが(ry
今回サンプルとして書いてみたのがこんな感じ。java scriptの要領なのかな。
トークン」は上でメモしたTokenの値に置き換えて下さい。

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
   console.log('ログインしました。');
});

client.on('message', message => {
   if (message.content.startsWith('!add slave')) {
        //役職名から役職IDの取得(役職IDをそのまま入力する場合は不要)
	const role = message.guild.roles.cache.find(role => role.name === 'レイドの奴隷');
        //役職の付与(ここでエラーが出る場合は、botの役職の位置が想定よりも下にある可能性があります)
	message.guild.member(message.author.id).roles.add(role);
        //成功した場合にメッセージ送信テストも兼ねて送るメッセージ。
	message.channel.send(message.author.username);
	message.channel.send('Added');

   }
});

client.login('「トークン」');

これを任意の場所に好きな名前で保存する。拡張子は.js。
コマンドを増やすならswitch文とかに変えるべき。
今回は導入したサーバーにレイドの奴隷という役職がある前提で行っていますが、もう少ししっかりとしたものを作るのであれば、対象の役職の有無を確認→無ければ生成とかにしたほうがいいと思います。

実行

コマンドプロンプトを開いて
・「node 」と打つ(スペースを忘れないこと)。
コマンドプロンプトに上で書いたプログラムのファイルをドラッグアンドドロップしてEnterを押す。
コマンドプロンプトに「ログインしました。」と出力されれば起動に成功しています。
・discordを開いて対象のbotがいるサーバーで「!add slave」と打ってみてレイドの奴隷の役職が自分に付与されれば成功です。何も起こらなかった場合はコマンドプロンプトにエラーメッセージが出ていると思うので確認してみてください。
f:id:poke_3_3_4:20200623154028p:plainf:id:poke_3_3_4:20200623153936p:plain

Hatena Blogで書いていると単語の下に出てくる謎の線

昨日とある先輩に言われて気になったけど

f:id:poke_3_3_4:20200603105053p:plain

↑この下線邪魔じゃね???
 

ということでこの下線の消し方を調べてみた。

どうやらHatena Blogの規約上、無料会員がリンクを消すのはダメらしいので、ここからは下線だけを消す方法。

スクショが縦長なので、見辛いのは仕様です。

 

PC版表示
1.ダッシュボードを開き、「デザイン」を選択


2.左上にあるカスタマイズボタンを押すと、一番下にデザインCSSという項目が出てくるのでこれを選択。

 
3.なんかよく分からないテキストボックスが出てくるのでこれをクリックし、書き込める状態にする。

 
↓多分初期値はこんな感じになってるはず↓

ここの一番後ろに以下の文をコピペすれば下線が消える

a.keyword {
    border: 0 !important;
    text-decoration: none !important;
    pointer-events: none !important;
    cursor: default;
    color: #5A5A5A;
}

こんな感じ

後は上の方にある変更を保存ボタンを押せば、PC版表示のほうは終わり。


スマートフォン版表示

1.PC版の時と同様にダッシュボードからデザイン→カスタマイズへ移動

2.ちょっと下にスライドすると記事上という項目が見つかる

初期だとこんな感じで空欄だと思うので、以下の文字を貼り付ける。

<script>
    a.keyword {
        border: 0 !important;
        text-decoration: none !important;
        pointer-events: none !important;
        cursor: default;
        color: #5A5A5A;
    }
</script>

3.ここで上の方に戻って、「カスタマイズ」ボタンの隣にある「スマートフォン」を選択

4.上から3番目くらいにある「記事」を選択

5.「PC版と同じHTMLを表示する」にチェックを入れる


完成!

music_info

最終更新日:2020/06/04 ver -0.50

 

 

概要

 これ何なんだ…?

 元々は知り合いに言われてアニメの曲をデータとして集めるためのものだったが、何時の間にか再生機能がついていたりアニソンのデータを拾っていた先のサイトが閉鎖するなどで何がしたいのか分からなくなってしまった。

 

使い方

 ・youtube周りの機能を使用する場合はGoogle Chromeのインストールが行われていることが前提となっています。ご了承ください。

曲の追加

 wikipediaから拾おうとした結果失敗したので手動しかありません。

 ・Input1.exeを起動し、適当に入力してもらえれば追加できます。

 ・作成当初はアニソンのみを想定していたため、最初の画面でアニメのタイトルと追加曲数、放送時期を入力するようになっています。

 ・現状、かなり使い勝手が悪いためできる方は各自適当に入力用の何かを作ってもらったほうが楽だと思います。

 

起動方法

 ・main.exeを起動するだけです。動作は見た目通りかと思います。

 ・曲をリストから選択しInfoボタンを押すことで詳細を開くことができます。音源がソフトに認識されていれば再生することも可能です。

 ・また、編集から曲名とお気に入りリスト、音源の設定が可能です。

 ・お気に入りボタンから、お気に入りに登録した曲を表示することができます。また、リスト再生ボタンからリストに登録してある曲を再生することもできます。

 ・検索ボタンから検索することも可能です。検索は「曲名」、「歌手」、「作曲者」、「作詞者」、「編曲者」、「備考」、「読み方」のいずれかに検索ワードが含まれれば出力されます(下図はイメージ)。検索結果をプレイリストとして連続再生することも可能です。

         f:id:poke_3_3_4:20200525153139p:plain

 ・シャッフル再生にチェックを入れている場合はランダムに再生されます。(現在はリストに含まれる曲のうち、3/4くらいを再生するまで同じ曲を再生しないようにしていますが、気が向いたら任意の値に変更できるようにしておきます)。

 ・また、シャッフル再生中に同ソフト内で別のウィンドウのボタンを押す等をするとシャッフル再生機能が一時停止してしまうので、何かしら別の操作をした後は復活ボタンを押すようにしてください(ごめんなさい…)。

2020/05/25追記

 ・youtubeの画面を開くと処理が重くなるので、映像が要らないという方はyoutubeを開いているウィンドウのサイズを最小に(最小化ではなく単純に縦×横を小さく)してもらえればそれなりに軽くなるかと思います。

 ・また、上記のように最後に復活ボタンを押した後であれば最小化していても恐らく正常に作動すると思います。

 

データの受け渡しについて

 ・人によってはデータ量が増えることが予想されるので、データの共有を行うための機能も一応置いています。

 ・使用しているデータはData\maindata.datに置いているのでこれを渡せばデータを渡したことになりますが、渡した相手だけが持っている曲のデータが消えたりお気に入り状態が変わったりしてしまうため非推奨です。

受け渡し方法

1.送る側がoutput.exeを実行します。

2.Data内にoutput.datが生成されるので、それを送る相手に渡します。

3.受信側がoutput.datを受け取ったらこのファイルをDataディレクトリ内に入れます。

4.import.exeを実行します。

 これでお気に入り状況を上書きせずにデータを渡すことが可能です。ただし、「曲名、放送時期、アニメタイトル、歌手」が少しでも異なると別の曲として認識されるため、これを使用する場合は互いに曲名等を正しく入力している必要があります。

 とりあえずサンプルとしてoutput.datを1つ添付しておいたのでやってみたい人はどうぞ。

 

main.exe内で再生する曲の追加

音楽ファイルを所持している場合

 ・1度でもmain.exeを起動していればMusicフォルダ内にmusic_dir.txtというファイルが存在しているはずなので、これを開いて音楽ファイルがあるフォルダのフルパスを1行につき1つずつ記入してください。よく分からない場合はMusicフォルダ内に音楽ファイルを入れてもらっても大丈夫だと思います。

 ・また、「曲名」と「曲名.(拡張子)」が対応するようになっているため、ファイルが無いと言われる場合はコピペなどで両者が同じになるようにしてください。それでも駄目だった時はmusic_dir.txtの文字コードANSIになっているか確認してください。

 

音楽ファイルを所持していない場合

 ・main.exe内のInfo→編集からyoutubeのurlを入力できるようになっていますが、それも面倒という場合はInput_youtube_url.exeを実行した後で、main.exeを再度実行してもらえればurlが入っていると思います。

 ・Input_youtube_url.exeの実行はネットワーク環境にもよりますが、それなりに時間がかかる上に正しいurlを拾ってこないこともよくあるので細部は手動で修正してください。

 

 

ver -0.50にて歌詞表示機能を仮実装しました

編集画面の左下のボタンから歌詞の追加・編集が行えます。

歌詞の追加は手動入力とサイトのリンクからの入力が可能です。対応しているサイトに関しては追加画面から確認してください。

また、かなり時間がかかりますがUtaten,歌詞GET(敬称略)から自動で取得する機能としてauto_kashi_v1.exe, auto_kashi_v2.exeを用意しています。v1のほうではUtatenからおおよそ1000曲/h程度、v2のほうはv1に比べ速度が落ちますが取得できる割合が上がります。

※auto_kashi_v1.exe, auto_kashi_v2.exeで取得できるのは「曲名」「歌手」「作詞者」「作曲者」が全て登録されている曲のみとなります。ご了承ください。

※歌詞データに関してはファイルの破損が起こりやすくなっているためauto_kashi_v1.exeとauto_kashi_v2.exeを同時に起動したり、これらを動かしている時にmain.exeにて歌詞の追加や編集を行わないようにしてください。

 

 

更新履歴

2020/06/04 ver -0.50 更新・歌詞の登録や表示機能を仮実装しました。

             ・リスト再生にて歌詞の自動表示を実装しました。

             ・リスト再生にて再生できないurlをスキップできるようになりました。

 

2020/05/25 ver -0.57  更新・不具合をいくつか改善しました。

              ・広告スキップを仮実装しました。仮なので動作が怪しかったらすみません…。あと、広告ブロックではないのでご了承ください。

 

2020/05/24 ver -0.58 更新 ・検索速度が向上しました。

              ・検索結果をプレイリストとして再生できるようになりました。

 

2020/05/22 ver -0.59 更新 ・再生リストに関する処理を少し変更しました。

               多少は軽くなってたりバグが減っていたりするはず…。

 

2020/05/21 ver -0.60 更新 ・お気に入りリストのリスト再生(仮)を追加しました。

                                              ・音楽ファイルの場所を指定できるようになりました。

 

2019/06/30 ver -0.70 更新 ・お気に入りリストの編集機能を追加実装しました。


2019/06/30 ver -0.75 更新 ・データの入出力に対応しました。


2019/06/10 ver -0.76 更新 ・exchange.exeにて「\」「/」「:」「|」「*」「?」についても全角に変換するようにしました(音楽ファイルに対応させるため)。

                                              ・main.exeにて特定条件下でメッセージボックスが削除されない不具合を修正しました。


2019/06/09 ver -0.77 更新 ・文字コードを変換する過程で生じる「&amp;」等を正しい表現に修正するexchange.exeを追加しました。  ファイル名にできない「<」「>」「"」については全角文字になるので音楽ファイルにもこれらの文字は全角を使用してください。


2019/06/03 ver -0.78 更新 ・main.exeにて特定の条件下でオブジェクトが消えない不具合を修正しました。


2019/06/03 ver -0.79 更新 ・main.exeの曲名順が正常に表示されなかったため修正しました。 ・Input2.exeの読み仮名を入力する画面で登録ボタンを押したときにカーソルが次の読み仮名の入力位置に移動するようにしました。


2019/06/01 ver -0.80 更新 ・main.exeの小さな不具合をいくつか修正しました。

                                              ・main.exeの検索機能を実装しました。検索時間はそこそこかかります。

                                              ・main.exeの詳細画面を閉じたときに詳細画面のみ閉じるようにしました。

                                              ・Input2.exeの検索能力を少し強化しました。

                                              ・Input2.exeの.csv形式での保存をより見やすくしました。


2019/05/28 ver -0.90 更新 ・起動速度を改善しました。

                                              ・項目選択時の処理速度が少しダウンしました。

                                              ・年代毎にタイトルが出現するように変更しました。


2019/05/21 ver -1.00 作成

Counter

最終更新日:2020/03/26 ver 0.01

概要

まあ読んで字のごとくただのカウンターですね。

特に変わった機能があるわけでもないです。

 

入っているもの

・default.txt

・config.txt

・main.exe

 

使い方

main.exeを起動するだけです。

デフォルトだとこんな感じ。

f:id:poke_3_3_4:20200521083824p:plain

 

表示する文字や、カウンターや文字列の数はdefault.txt(下図)を書き換えることで変更できます。

f:id:poke_3_3_4:20200521082627p:plain

//number//が数字、//text//が任意の文字列に置き換わります。

画面の大きさや文字サイズ、フォント等はconfig.txtを書き換えてもらえれば変更できます。

now_anime

最終更新日: 2020/07/03 ver -0.88

概要

ニコニコ動画で、事前に登録したアニメの中でまだ見てないアニメのページを開く何かです。

毎週、最新話が更新される曜日の翌日に未視聴リストに対応するアニメが追加されます。

ワンクリックで観ていないアニメが観られればいいなくらいの軽い気持ちで作りました。

 

使い方

以下オンライン前提です。

アニメの登録

(現状、各クール初期にやること推奨です)

 

f:id:poke_3_3_4:20200521091420p:plain

 

1.get_list.exeを起動し、該当する年と季節を入力する。

2.OKボタンを押すと、ニコニコ動画に公式チャンネルが作成されているアニメの一覧が出てくるので、観たいアニメにチェックを入れてNEXTボタンを押す。

3.プログラムが終了するのを待ちます。

4.公式チャンネルからアニメの放送開始日時が取得できない場合があるので、入力を促されたときは手動で入力してください。曜日は自動で計算されます。

5.output.csvが生成されていれば完了です。

 

アニメの視聴

main.exeを起動し、観たいアニメを選んでOPENボタンを押すだけです。

視聴完了ボタンを押すと、翌週の更新日まで未視聴リストに表示されなくなります。

デフォルトではmain.exe起動時にoutput.csvからアニメ一覧を取得するようになっていますが、config.txt内を書き換えることで変更可能です。

また、アニメ名や更新日等がおかしいときは読み込んでいるcsvファイルを書き換えてもらえれば大丈夫だと思います。

 

 

~更新履歴~

2020/07/02 ver -0.88更新 ・日付の取得方法を変更しました。公式チャンネルに1話開始日時が書かれていなくてもよくなりました。2クールアニメの後半にも日付を自動で取得できます。

 

2020/04/06 ver -0.89更新 ・タイトル名に「-」が含まれる場合に(少しだけ)対応しました

・final.exeにて曜日計算の際に発生する不具合を修正しました.

2020/04/06 ver -0.90更新 ・公式チャンネルに更新日が書かれていないアニメの更新日をプログラム中で入力できるようにしました.

・チャンネル検索結果が複数存在するアニメに対しある程度正確にチャンネルを探すことができるよう改善しました.

・更新箇所:final.exe Get_List.exe

 

2020/04/03 ver -1.00公開

 

気が向いたら対応するもの

・アニメ放送開始日時の取得方法の変更対応しました

・main.exe内でのアニメの削除

334のゴミ箱

超低確率で偶にゴミを生成しgoogle driveに投げる際に、READMEを更新するのが面倒(画像も入れられないし)なのでこのブログで適当に書いておこうと思います。

基本的に駄文&頭の悪いプログラムで出来ているのでそれでも良いという方はどうぞ。