ikabu's Issues
カテゴリー削除でエラーが発生する
2022-09-26T18:05:18.000000+00:00 app[api]: Build succeeded
2022-09-27T03:50:55.836491+00:00 app[worker.1]: TypeError: Cannot read properties of null (reading 'id')
2022-09-27T03:50:55.836499+00:00 app[worker.1]: at /app/app/manager/channelManager.js:69:38
2022-09-27T03:50:55.836500+00:00 app[worker.1]: at Map.find (/app/node_modules/@discordjs/collection/dist/index.js:122:11)
2022-09-27T03:50:55.836501+00:00 app[worker.1]: at searchChannelById (/app/app/manager/channelManager.js:69:24)
2022-09-27T03:50:55.836501+00:00 app[worker.1]: at runMicrotasks (<anonymous>)
2022-09-27T03:50:55.836501+00:00 app[worker.1]: at processTicksAndRejections (node:internal/process/task_queues:96:5)
2022-09-27T03:50:55.836501+00:00 app[worker.1]: at async deleteCategory (/app/app/cmd/admin-cmd/deleteCategory.js:76:18)
~をプレイ中が表示されなくなった
v14にしたら出なくなったっぽいので対応必要かも
AFK移送後、スマホユーザは切断させる
寝落ちの場合、スマホの充電切れ防いだり、wi-fi切れたときの通信量を削減できる
ロールごとのメンバー数を表示する
- ウデマエロールの分布表示
- 1日に1回Webhookで更新
- フェスのチーム投票分布表示
- ロール付与をトリガーに更新
ヘルプの更新
- イカ部歴コマンドの追加
- help voiceのspeed,pitchを削除
- フェスコマンドの削除
フレンドコード登録後の参照優先度が自己紹介になってる
自己紹介チャンネル100件以内に投稿があるとfriend code addしても自己紹介が優先されてるっぽい。
登録されている場合は登録を優先したほうがいい。
チャンネルIDの環境変数化
フェスのロールカラーのデータ取得について
- currentFestにチームごとのカラーコードがあるからそこから自動化するかどうかを要検討
- 次のフェスも同じidで特定できるようなら検討する
- フェス開始1日前からしかデータ取れないことが懸念点
"currentFest": {
"id": "RmVzdC1VUzpKVUVBLTAwMDAx",
"title": "What would you bring to a deserted island?",
"startTime": "2022-09-24T00:00:00Z",
"endTime": "2022-09-26T00:00:00Z",
"midtermTime": "2022-09-25T00:00:00Z",
"state": "SCHEDULED",
"teams": [
{
"id": "RmVzdFRlYW0tVVM6SlVFQS0wMDAwMTpBbHBoYQ==",
"color": {
"a": 1,
"b": 0.972549021,
"g": 0.0980392173,
"r": 0.541176498
},
"myVoteState": null,
"role": null
},
{
"id": "RmVzdFRlYW0tVVM6SlVFQS0wMDAwMTpCcmF2bw==",
"color": {
"a": 1,
"b": 0.0941176489,
"g": 0.443137288,
"r": 0.749019623
},
"myVoteState": null,
"role": null
},
{
"id": "RmVzdFRlYW0tVVM6SlVFQS0wMDAwMTpDaGFybGll",
"color": {
"a": 1,
"b": 0.368627489,
"g": 0.752941191,
"r": 0.160784304
},
"myVoteState": null,
"role": null
}
],
"tricolorStage": {
"name": "Hammerhead Bridge",
"image": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/low_resolution/1db8ab338b64b464df50e7f9e270e59423ff8caac6f09679a24f1b7acf3a82f3_1.png"
},
"id": "VnNTdGFnZS0xMA=="
}
},
"currentPlayer": {},
"vsStages": {
"nodes": [
{
"stageId": 1,
"id": "VnNTdGFnZS0x",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/35f9ca08ccc2bf759774ab2cb886567c117b9287875ca92fb590c1294ddcdc1e_0.png"
},
"name": "Scorch Gorge",
"stats": null
},
{
"stageId": 2,
"id": "VnNTdGFnZS0y",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/898e1ae6c737a9d44552c7c81f9b710676492681525c514eadc68a6780aa52af_0.png"
},
"name": "Eeltail Alley",
"stats": null
},
{
"stageId": 3,
"id": "VnNTdGFnZS0z",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/8dc2f16d39c630bab40cead5b2485ca3559e829d0d3de0c2232c7a62fefb5fa9_0.png"
},
"name": "Hagglefish Market",
"stats": null
},
{
"stageId": 4,
"id": "VnNTdGFnZS00",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/9b1c17b2075479d0397d2fb96efbc6fa3a28900712920e5fe1e9dfc59c6abc5c_0.png"
},
"name": "Undertow Spillway",
"stats": null
},
{
"stageId": 6,
"id": "VnNTdGFnZS02",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/de1f212e9ff0648f36cd3b8e0917ef36b3bd51445159297dcb948f34a09f2f05_0.png"
},
"name": "Mincemeat Metalworks",
"stats": null
},
{
"stageId": 10,
"id": "VnNTdGFnZS0xMA==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/1db8ab338b64b464df50e7f9e270e59423ff8caac6f09679a24f1b7acf3a82f3_0.png"
},
"name": "Hammerhead Bridge",
"stats": null
},
{
"stageId": 11,
"id": "VnNTdGFnZS0xMQ==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/b9d8cfa186d197a27e075600a107c99d9e21646d116730f0843e0fff0aaba7dd_0.png"
},
"name": "Museum d'Alfonsino",
"stats": null
},
{
"stageId": 12,
"id": "VnNTdGFnZS0xMg==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/8273118c1ffe1bf6fe031c7d8c9795dab52632c9b76e8e9f01f644ac5ae0ccc0_0.png"
},
"name": "Mahi-Mahi Resort",
"stats": null
},
{
"stageId": 13,
"id": "VnNTdGFnZS0xMw==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/40aba8b36a9439e2d670fde5b3478819ea8a94f9e503b9d783248a5716786f35_0.png"
},
"name": "Inkblot Art Academy",
"stats": null
},
{
"stageId": 14,
"id": "VnNTdGFnZS0xNA==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/48684c69d5c5a4ffaf16b712a4895545a8d01196115d514fc878ce99863bb3e9_0.png"
},
"name": "Sturgeon Shipyard",
"stats": null
},
{
"stageId": 15,
"id": "VnNTdGFnZS0xNQ==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/a8ba96c3dbd015b7bc6ea4fa067245c4e9aee62b6696cb41e02d35139dd21fe7_0.png"
},
"name": "MakoMart",
"stats": null
},
{
"stageId": 16,
"id": "VnNTdGFnZS0xNg==",
"originalImage": {
"url": "https://splatoon3.ink/assets/splatnet/stage_img/icon/high_resolution/61ea801fa4ed32360dcaf83986222ded46a72dbf56194acc6d0cf4659a92ba85_0.png"
},
"name": "Wahoo World",
"stats": null
}
]
}
サポートセンターの自動タグ付け
- 新規スレッドが立ったら自動で「対応中」タグをつける
- 新規スレッドが立ったらスレッドクローズボタンを投稿
- スレッドクローズボタンが押されたら「対応中」→「解決済み」にタグを変更し、
スレッドをロックしてクローズ
フォーラム内でdispandarが動くとエラーが発生する
2022-09-15T03:29:24.680536+00:00 app[worker.1]: if (msg.member.permissions.has('ADMINISTRATOR') && suggestionChannelParentId == msg.channel.parent.id && msg.content === '!close') {
2022-09-15T03:29:24.680537+00:00 app[worker.1]: ^
2022-09-15T03:29:24.680538+00:00 app[worker.1]:
2022-09-15T03:29:24.680538+00:00 app[worker.1]: TypeError: Cannot read properties of null (reading 'id')
2022-09-15T03:29:24.680539+00:00 app[worker.1]: at Object.suggestionBoxArchive [as archive] (/app/app/reaction/suggestion-box.js:35:108)
2022-09-15T03:29:24.680540+00:00 app[worker.1]: at Client.<anonymous> (/app/app/index.js:77:19)
2022-09-15T03:29:24.680540+00:00 app[worker.1]: at Client.emit (node:events:394:28)
2022-09-15T03:29:24.680540+00:00 app[worker.1]: at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:26:14)
2022-09-15T03:29:24.680541+00:00 app[worker.1]: at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
2022-09-15T03:29:24.680542+00:00 app[worker.1]: at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:346:31)
2022-09-15T03:29:24.680542+00:00 app[worker.1]: at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:478:22)
2022-09-15T03:29:24.680542+00:00 app[worker.1]: at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:317:10)
2022-09-15T03:29:24.680543+00:00 app[worker.1]: at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:199:18)
2022-09-15T03:29:24.680544+00:00 app[worker.1]: at WebSocket.emit (node:events:394:28)
2022-09-15T03:29:24.680544+00:00 app[worker.1]: at Receiver.receiverOnMessage (/app/node_modules/ws/lib/websocket.js:1169:20)
2022-09-15T03:29:24.680544+00:00 app[worker.1]: at Receiver.emit (node:events:394:28)
2022-09-15T03:29:24.680545+00:00 app[worker.1]: at Receiver.dataMessage (/app/node_modules/ws/lib/receiver.js:528:14)
2022-09-15T03:29:24.680545+00:00 app[worker.1]: at Receiver.getData (/app/node_modules/ws/lib/receiver.js:446:17)
2022-09-15T03:29:24.680545+00:00 app[worker.1]: at Receiver.startLoop (/app/node_modules/ws/lib/receiver.js:148:22)
2022-09-15T03:29:24.680546+00:00 app[worker.1]: at Receiver._write (/app/node_modules/ws/lib/receiver.js:83:10)
2022-09-15T03:29:24.805382+00:00 heroku[worker.1]: Process exited with status 1
2022-09-15T03:29:24.867381+00:00 heroku[worker.1]: State changed from up to crashed
2022-09-15T03:29:34.435057+00:00 heroku[worker.1]: State changed from crashed to down
2022-09-15T03:29:34.286712+00:00 app[api]: Scaled to web@0:Free worker@0:Free by user [email protected]
vpickで人数超えてたらエラー出す
vpick で指定した人数がVC内メンバーの数を超えていたらエラーを出す
AbortError:member missingをwarningログとして出力
errorだと通知が飛ぶのでcatchしてwarningにラップしてログ出力する
[[WARN] MemberManager] member missing
2022-12-15 00:49:33.889 JST
node:events:842
reject(new AbortError());
^
AbortError: The operation was aborted
at abortListener (node:events:842:14)
at EventTarget.<anonymous> (node:events:878:47)
at EventTarget.[nodejs.internal.kHybridDispatch] (node:internal/event_target:559:20)
at EventTarget.dispatchEvent (node:internal/event_target:504:26)
at abortSignal (node:internal/abort_controller:97:10)
at AbortController.abort (node:internal/abort_controller:122:5)
at Timeout.<anonymous> (/home/bukichi/main/ikabu/node_modules/@discordjs/voice/dist/index.js:1931:39)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7) {
code: 'ABORT_ERR'
}
スプラトゥーン3用のステージ情報表示コマンド
[1時間リグマ募集]募集主が募集をキャンセルできるようにする
〆コマンドか✖リアクションで募集主のみ募集をキャンセルできるようにする
メンション読み上げる時ユーザーID読んでるみたい
サーバーネームを読み上げるように修正
snowflakeの桁数増えた影響でdispandarがエラー
URL展開するときにエラー発生
2022-07-27T07:34:25.277342+00:00 app[worker.1]: DiscordAPIError: Unknown Message
2022-07-27T07:34:25.277343+00:00 app[worker.1]: at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
2022-07-27T07:34:25.277344+00:00 app[worker.1]: at processTicksAndRejections (node:internal/process/task_queues:96:5)
2022-07-27T07:34:25.277345+00:00 app[worker.1]: at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
2022-07-27T07:34:25.277346+00:00 app[worker.1]: at async MessageManager._fetchId (/app/node_modules/discord.js/src/managers/MessageManager.js:221:18)
2022-07-27T07:34:25.277346+00:00 app[worker.1]: at async extractMessages (/app/app/event/dispandar.js:38:22)
2022-07-27T07:34:25.277346+00:00 app[worker.1]: at async Object.dispand (/app/app/event/dispandar.js:10:20) {
2022-07-27T07:34:25.277347+00:00 app[worker.1]: method: 'get',
2022-07-27T07:34:25.277348+00:00 app[worker.1]: path: '/channels/561939130645479434/messages/100175348215763767',
2022-07-27T07:34:25.277348+00:00 app[worker.1]: code: 10008,
2022-07-27T07:34:25.277348+00:00 app[worker.1]: httpStatus: 404,
2022-07-27T07:34:25.277349+00:00 app[worker.1]: requestData: { json: undefined, files: [] }
2022-07-27T07:34:25.277349+00:00 app[worker.1]: }
2022-07-27T07:34:25.407660+00:00 heroku[worker.1]: Process exited with status 1
2022-07-27T07:34:25.554864+00:00 heroku[worker.1]: State changed from up to crashed
フェス期間を含むstageinfoでエラー
ikabu/app/cmd/splat3/stageinfo.js
Line 88 in 3cffcd6
getLeagueDataを呼び出す前にcheckFesしないとvsRuleが取れなくて落ちる
async function getLeagueEmbed(data) {
const stageEmbed = new Discord.EmbedBuilder().setTitle('ステージ情報');
const num = getLeagueList(data.schedule).length;
for (let i = 0; i < num; i++) {
let league_data = await getLeagueData(data, i);
let stage;
let rule;
if (checkFes(data.schedule, i)) {
rule = 'フェス期間中';
stage = 'フェス期間中はお休みでし';
} else {
rule = league_data.rule;
stage = league_data.stage1 + '/' + league_data.stage2;
}
const league_start_date = formatDatetime(league_data.startTime, dateformat.ymdwhm);
const league_end_date = formatDatetime(league_data.endTime, dateformat.hm);
let name = league_start_date + '-' + league_end_date + ' 【' + rule + '】';
stageEmbed.addFields([{ name: name, value: stage }]);
}
stageEmbed.setTimestamp();
stageEmbed.setFooter({ text: 'StageInfo by splatoon3.ink' });
return stageEmbed;
}
メンションをつけずにfcコマンドを実行するとエラーになる
Line 23 in f74ec1f
id拾ってこれなくて落ちてる
vcmentionをリプライで表示
コマンド使用方法が確認できるようにするため
イカ部歴をプロフィールに進化
データベースからフレンドコード引っ張ってくる
ロールアイコンをバッジとして表示
チャットカウンターを設置(or チャットカウントからレベリング)
なんかDB使えたら好きな武器とか入れても良い
サポーターはバッジに加えてなんか枠とかつける
fc コマンドでブキチを指定すると大量のブキチのメッセージが拾われる
banコマンドの理由部分にスペースがあると全文送れない
メンバー追加後、1ヶ月間は新入部員扱いにする
1ヶ月後以降に発言があった場合に削除する
showコマンド、ステージ情報にXマッチを追加
buki randomをAPI取得じゃなくDBから取得へ
fcコマンドがニックネームだと正常に動作しない
Describe the bug
fcコマンドについて、ニックネームなしだと動作するが、ニックネームを変更すると動作しない.
roleManagerのユーザーIDとユーザータグの判定に不具合あり
roleManager.js
if (memberId.length == 18) {
member = await guild.members.cache.get(memberId);
} else {
member = await guild.members.cache.find((member) => member.user.tag === memberId);
}
- snowflakeの桁数が19桁になったので対応必要
- そもそもユーザータグ形式でちょうど18桁の場合もtrueになるので数字のみかどうかを判定する必要あり
新入部員ロールの出戻り対策
chat履歴見て、1件以上メッセージがあれば役職はつけない。
show runでブキが全部?になる
undefined出ないようにしたときのバグ
画像だけの投稿の時にエラー
Line 30 in 6fcdf1d
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'proxyURL' of undefined
Object.composeEmbed (/app/app/common.js:30:64)
DiscordAPIError: Unknown Memberが発生する
2022-09-25T02:00:51.918041+00:00 app[worker.1]: DiscordAPIError: Unknown Member
2022-09-25T02:00:51.918050+00:00 app[worker.1]: at RequestHandler.execute (/app/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
2022-09-25T02:00:51.918051+00:00 app[worker.1]: at runMicrotasks (<anonymous>)
2022-09-25T02:00:51.918051+00:00 app[worker.1]: at processTicksAndRejections (node:internal/process/task_queues:96:5)
2022-09-25T02:00:51.918052+00:00 app[worker.1]: at async RequestHandler.push (/app/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
2022-09-25T02:00:51.918052+00:00 app[worker.1]: at async GuildMemberManager.edit (/app/node_modules/discord.js/src/managers/GuildMemberManager.js:279:15) {
2022-09-25T02:00:51.918053+00:00 app[worker.1]: method: 'patch',
2022-09-25T02:00:51.918053+00:00 app[worker.1]: path: '/guilds/414095683222765609/members/847869773940785182',
2022-09-25T02:00:51.918054+00:00 app[worker.1]: code: 10007,
2022-09-25T02:00:51.918054+00:00 app[worker.1]: httpStatus: 404,
2022-09-25T02:00:51.918054+00:00 app[worker.1]: requestData: {
2022-09-25T02:00:51.918055+00:00 app[worker.1]: json: { roles: [Array], communication_disabled_until: undefined },
2022-09-25T02:00:51.918055+00:00 app[worker.1]: files: []
2022-09-25T02:00:51.918055+00:00 app[worker.1]: }
2022-09-25T02:00:51.918055+00:00 app[worker.1]: }
フレンドコードのコマンドの仕様変更
- ユーザー指定をなくす
- 削除ボタンもしくは時間経過で埋込を削除
読み上げの音声パラメータをIDではなくニックネームから設定する
新入部員ロールの解除条件追加
members テーブルを作成
chatするたびにmessage countをcount upする
members テーブルのmessage countが100以上
人生で初めてイカ部コマンド使ったときor新入部員ロールが外れたときにアンケートフォームをDMで送りつける
初見の人の声を拾えたらいいな施策
起動時にDBからタイムスタンプ見て不要な募集のレコード削除
起動時にDBからタイムスタンプ見て募集のレコードを削除(2週間ぐらい)
メッセージ見つかってピンどめされたままならunpinもしたい
デバッグ用メッセージのフォーマット、末尾に閉じカッコいれたい
環境変数設定関連バグ
- 環境変数削除コマンドを使った後にisNotEmptyで判定かけるとそのまますり抜ける。
- 一度環境変数設定コマンドを使用した後、環境変数の設定ファイルに追記すると改行される(ファイル末尾だけ改行しないようにする必要あり)
募集〆メッセージのチャンネルリンクがスプラ2のまま
https://discord.com/channels/414095683222765609/1012037124872212560/1023131766069923840
メンバー募集のやり方がスプラ2カテゴリのチャンネルになってる
難破船ドン・ブラコを追加
12/1からなのでそれまでにやる必要あります
関数の呼び出し方法を元に戻す
ドキュメンテーションコメントを参照できないなどの問題があったため
エラーログをDMかSlackかに吐き出す
スプラの募集コマンドを実行するとメッセージが二重送信される
発生原因がわからず、再現できないが、頻度が増えてきている。
kansenコマンド使うと落ちる
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] /app/node_modules/js-combinatorics/commonjs/combinatorics.js:37
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] [n, k] = [_BI(n), _BI(k)];
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] ^
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] SyntaxError: Cannot convert 1,2,3,4,5,6,7,8,9,10 to a BigInt
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at BigInt (<anonymous>)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at permutation (/app/node_modules/js-combinatorics/commonjs/combinatorics.js:37:15)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Object.combination (/app/node_modules/js-combinatorics/commonjs/combinatorics.js:57:19)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at handleKansen (/app/app/cmd/kansen.js:8:29)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Object.call (/app/app/handler.js:37:13)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Client.<anonymous> (/app/app/index.js:54:13)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Client.emit (node:events:394:28)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:26:14)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:346:31)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:478:22)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:317:10)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:199:18)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at WebSocket.emit (node:events:394:28)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Receiver.receiverOnMessage (/app/node_modules/ws/lib/websocket.js:1169:20)
Jun 09 06:40:23 [discordbot-ikabu][app/worker.1] at Receiver.emit (node:events:394:28)
イカ部歴が何年何か月か表示するコマンド
4周年企画でイカ部歴を表示したらおもろそう
TatsuでJoin Dateが取得できるので同じようにデータ取って現在日時から算出できそう
https://discord.com/channels/414095683222765609/465031112318517248/931126079316426762
募集コマンドのユーザーの画像をサーバープロフィールのものに変更
interaction.member.user.displayAvatarURL
からinteraction.member.displayAvatarURL
に変更する。
メッセージリンクを展開する
プラベ募集 (ボタン)がメンション飛んでない
リプライの中にメンション入れちゃってるのでメンションが飛んでない(はず)
リプライでダミーメッセージ的なの送れると良い(透過の小さい画像とか?)
ランダムマッチングの募集中にherokuの再起動が入るとタイマーが消える問題
DBで管理するようにする
random_matching_messageテーブル
- botの募集メッセージidを管理
random_matching_reactionsテーブル
- 募集メッセージに✅リアクションしたときにuser_idを記録
GASトリガー
- 毎時30分
- 募集コマンドをwebhookで投稿
- 処理終了時に全データ削除
- 毎時55分
- 募集の〆コマンドをwebhookで投稿
- random_matching_messageを検索し、1件もない=タイマーでうまくいってたらメッセージが削除されているはずなので何もしない
- random_matching_messageにデータがあった場合は、random_matching_reactionsにあるuser_idを使ってチーム分けを投稿
- 処理終了時に全データ削除
リアクション追加イベント
- index.jsでイベントを拾って実施
- random_matching_reactionsにメッセージidとuseridをinsert
リアクション削除イベント
- index.jsでイベントを拾って実施
- random_matching_reactionsからメッセージidとuseridをdelete
募集のホストへの通知
ホストがVCに接続している場合はtext in voiceにメンション付きで通知
VCに接続していない場合は募集チャンネルへ通知
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.