marukot-chの日記

弱小SEの雑記です

discord.pyの開発が凍結された話を聞いて悲しい

DiscordのBotでよく使われている、discord.pyが終了するといった話がTwitterで流れてきて、とてもびっくりした。

うそだと思いたくて調べてみると、本当だった。

discord.pyのGitHubリポジトリはすでにArchiveされていた。

f:id:marukot-ch:20210828122747p:plain

アーカイブされたdiscord.pyリポジトリ

 

DeepL翻訳で日本語訳にしたフォークがあったので読んだけれど、中々につらい文章だった。

dpyのこれから.md · GitHub

*埋め込みの挙動が想像と違ってたので8/31に修正

元記事はこちら

 

discord.pyでしかBotを作ってこなかったので、とても悲しい。

スラッシュコマンドのライブラリと併用すれば、今後もBotは使えるのだろうと思うけれど。本家の実装を楽しみにしていたので、残念でならない。

 

自作したdiscord用のリマインダーBotの使い方について説明します(定期実行可能なやつ)

先日公開したリマインダーBotの使い方的なものを説明します(ちょっと簡素すぎてよく分からなかったかもしれない、と後に思いました)

 

marukot-ch.hatenablog.com

 

 

  • reminder-botのコマンド一覧
  • /remind-make: リマインド作成
    • /remind-makeの必須パラメータ
    • /remind-makeのオプション
    • 参考: 全オプション指定した場合の表示
  • /remind-list: リマインド表示
    • /remind-listのオプション(必須パラメータなし)
  • /remind-list-guild-all: ギルドのリマインド表示
    • /remind-list-guild-allのオプション(必須パラメータなし)
  • /remind-cancel: リマインドキャンセル
    • /remind-cancelの必須パラメータ
    • /remind-cancelのオプション
  • このBotの注意点
  • 使ってみたい方向け情報

 

続きを読む

discord用のリマインダーBot作成したので、公開します

しこしこと作っていた、リマインダーBotがDMまで対応できたので公開します。

f:id:marukot-ch:20210807201111p:plain

いらすとや(文房具:メモ)

きっかけ

 

概要

  • Discordのスラッシュコマンドに対応したリマインダーBotです
  • リマインドの定期実行が可能です(分/時/日/月/年/曜日/(休日|平日))
  • ギルド管理者はギルドで登録されたリマインドも見ることができます
  • DMへリマインドすることもできます。BotとのDMで/remind-makeするか、チャンネルをDMとして/remind-makeしてください

 使い方(8/18追記)

  • 別記事を書きました

marukot-ch.hatenablog.com

その他

Replitで動かしているので、興味があればForkボタンで簡単にコピーできます。

(その場合、encrypted.binは消してください)

f:id:marukot-ch:20210807200511p:plain

 

以下、招待リンクや動かいている場所、ソース(GitHub)です。

 

招待リンク: 

https://discord.com/api/oauth2/authorize?client_id=865141043891798060&permissions=2147723280&scope=bot%20applications.commands

 

動いている場所(Replit)

replit.com

 

ソース: 

github.com

 

なんか動かなかったらコメントなりで教えて下さい。

追加したほうが良い機能や修正したい挙動があれば、GitHubIssueDiscussionsに書き込んでください。

 

ScrapboxにUserScriptで自動スクロール機能を追加した

前書き

 ScrapboxというWebサービスを日記や雑記等に使っている。Scrapboxは[]で囲ったところがリンクになり、リンクを含むもの同士が関連ページとして表示されるのが特徴のサービス。その他、カーソルがある行だけ記法が表示され、公開されたScrapboxを見て、面白い手法を真似することができる。また、大変興味深い機能として、cssをカスタマイズしたり(UserCSS)、scriptをカスタマイズできる(これがUserScript)。こちらもほかの人の面白い機能を真似できてとても楽しい。

 今回、自動スクロール機能をつけてみたことについて書く。

2行で説明

  • Scrapboxにはユーザーが機能を追加することができる、UserScriptという機能がある(設定でONにする必要アリ/動かすにはユーザーページに記載が必要)
  • 個人のページにコード譜をメモったりしていて、他のコード譜公開サイトみたいに自動スクロールすると便利だと思ったので実装
続きを読む

AmazonのURLをすこし短くするブックマークレットつくった

前提

AmazonのURLはたまに気持ち悪い。なんか日本語の情報とかが入っていたりして、よく分からない。
そういうのが嫌なときは手動で消していたのだけれど、なにかのはてブで以下のブックマークレットがあることを教えてくれた(たぶん、青髪ツインテの人だったと思う)。

javascript:(function(){var asin=document.getElementById('ASIN').value; location.href='https://www.amazon.co.jp/dp/'+asin+'/';})();

これはこれで便利だったのだけれど、個人的にいちばん使う、Kindleのときに失敗してしまうことに気づいた。
それで自分で適当に作り直してみた。
元々のやつだと、ASINでやっていたが、自分のやつはレビューのところを拾ってきてASINを取っている。そういうのが無いやつ(Kindle本の全巻まとめみたいなの)もあったので、nullだったらURLを適当につける感じにしている。

javascript:(function(){var asin=document.getElementById('averageCustomerReviews');if(asin==null){location.href='https://' + location.host + location.pathname;} else{location.href='https://www.amazon.co.jp/gp/product/'+asin.attributes[1].value+'/';}})();

結果

Kindleの本のURLも簡単に短くなる(共有しやすいね!)
変換前: https://www.amazon.co.jp/%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%C3%97%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9-3-%E8%8A%B1%E3%81%A8%E3%82%86%E3%82%81%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF%E3%82%B9-%E5%A4%A9%E4%B9%83%E5%BF%8D-ebook/dp/B097QM1MPB/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9+%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9&qid=1626784551&s=digital-text&sr=1-1

変換後: https://www.amazon.co.jp/gp/product/B097QM1MPB/

タイトルに「すこし」と書いたとおり、元々のブックマークレットのほうがちょっと短い

適当に検索していたら、以下のようなサイトを見つけた。はてな社は色んなことしているなーと思った let.hatelabo.jp

追記(22:10)

なんかダメな例があったので、以下に変更します。

https://www.amazon.co.jp/GP-4543471003447-%E3%82%AB%E3%82%BF%E3%83%B3-%EF%BC%93%EF%BC%A4%E7%89%88/dp/B099NBWGGV/

javascript:(function(){var asin=document.getElementById('all-offers-display-params');if(asin==null){location.href='https://' + location.host + location.pathname;} else{location.href='https://www.amazon.co.jp/gp/product/'+asin.attributes[3].value+'/';}})();

DiscordのWebhookでEveryoneにメンションが飛びびっくりしたこと

 はてなブックマークには、関心ワードという機能がある。自分の場合、そこにdiscordというものを登録している。その関心ワードを集めたRSSを取得するURLを作成できるので、それを使ってDiscordへWebhookで連携している。

 そのWebhookから先日、Everyone宛にメンションが飛んだ。

f:id:marukot-ch:20210626104858p:plain

全員へメンションを飛ばす該当のメッセージ(from webhook)

今回この記事で語るのはやったこと、ダメだったこと、成功したことを時系列で語る(どうすれば解決できるか一瞬でわかる人もいそうだけど)。

 概要を把握したい人向けに3行で説明

  • 「@everyone」を文章に含む記事がWebhookで連携されて全員にメンションされてしまった
  • everyoneロールにメンション権限を解除、適当にallowed_mentionsを設定してもダメ(WebのPostできるサイトからはうまくいくのに)
  • 'contentType': 'application/json'に指定し、payloadをJSON.stringify(payload)するとうまくいった

 記事的には以下のやつ。

 

 まず思いつくこととしてこのサーバーでは全員に、メンションできる権限をふっていたので、それをやめた。もう一度試してみるが、普通にメンションされてしまう(Webhookには効かないらしい)。

f:id:marukot-ch:20210626105536p:plain

everyone(デフォルト)の権限のメンション可能かどうかの設定

 続いて、Googleで検索してみると、以下のサイトが見つかる。お目当ての設定も見つかった。以下のようにallowed_mentionsにそれっぽいことをすると誰にも通知されないらしい。

{
  "username": "test",
  "content": "@here hello! 今度こそOKのはず。",
  "allowed_mentions":{
    "parse": []
  }
}

allowed_mentions - Discord Webhooks Guide

 WebhookをサイトからPostして成功したのを確認し、今回事件が起こったGoogle Apps Scriptから実行してみる。
 残念ながら、むしろ何も起こらない。投稿されないし、エラーにもなっていなかった。Google Apps Scriptは無料版だとログが保持されないので、手元から実行させて確認すると、 Responseが以下だった。ステータスコードは400。
allowed_mentions "Only dictionaries may be used in a ModelType"

 検索しても全然いい記事がひっかからない。言っている意味もよくわからないし。ということでjavascriptはあんまり分かってないし、やり方が違うのか? と試行錯誤する。で、JSONで送ることを明示的に指定し、JSON 文字列に置き換えたらうまくいった(最初からそうやっておこうね。。。)。
const payload = {
  'token': discordSettings.token,
  'channel': discordSettings.channel,
  'content': postMsg,
  'parse': parse,
  'allowed_mentions': {
    parse:[
],// 追加
  }
};

const params = {
  'method': methods,
  'contentType': 'application/json', // content-typeをjsonにした
  'payload' : JSON.stringify(payload), //stringifyした
  'muteHttpExceptions': true,
};


 〜終わり〜

f:id:marukot-ch:20210626111059p:plain

メンションされてないやつ





ルーターと回線終端装置とサービス情報サイトと私

 OCNから営業の電話がかかってきたのです。

 「回線をNTTからOCNにするだけで、月々1,000円安くなりますよ。」って。

 なるほど、と思って手続きを進めたのですが、NTTの回線契約がなくなるとフレッツ光メンバーズクラブで溜まってたポイントが消えてしまうとのこと。

 それでポイントを使ってしまおうと、手続きをしてみたのですが! 全然手続きがすすまないのです!!!

 

--

■忙しい人のための3行

・NTT回線を解約するフレッツ光メンバーズクラブのポイントが消失する

・自分の環境ではルーター(ASUS RT-AC67U)を経由するとフレッツ到達できず

・回線終端装置とPCを直繋ぎで到達し、無事ポイント消費

--

続きを読む