質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

3739閲覧

discordのbotが途中で落ちてしまい、継続して動作しない

dice.

総合スコア2

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/05 13:02

前提・実現したいこと

TRPGに使うDiscordのダイスbotを自作してglitch.comで稼働させているのですが、複数回の処理に耐えられずbotが落ちてしまいます。
メモリ、又はCPU使用量がオーバーして落ちていることが原因のようです。
安定稼働させるためにはどのような修正を施せばよいのでしょうか。あるいは、無料版ではこれが限界なのでしょうか。

発生している問題・エラーメッセージ

The app exceeded the memory limit. Stopping and pausing for 15 seconds. Large or inefficient processes, libraries or compilers that use too much RAM may get killed This may be caused by large or inefficient processes, libraries or compilers

該当のソースコード

JavaScript

1const Discord = require("discord.js"); 2const client = new Discord.Client(); 3 4client.on("ready", () => { 5 console.log(`${client.user.tag} でログインしています。`); 6}); 7 8client.on("message", async msg => { 9 if (msg.content.match(/[0-9]{1,}[d][0-9]{1,}/)) { 10 const sai = msg.content.split("+")[0]; 11 const top = sai.substr(0, sai.indexOf("d")); //dより前を取得 12 const bottom = sai.substr(sai.indexOf("d") + 1); //dより後を取得 13 const array = []; 14 const max = bottom.match(/[0-9]{1,}/); //最大数 dより後の数字のみを抽出 15 const many = top.match(/[0-9]{1,}/); //何回か dより前の数字だけを抽出 16 for (let i = 0; i < many; i++) { 17 array.push(Math.floor(Math.random() * max) + 1); 18 } 19 if (max == 100) { 20 if (array >= 96) { 21 msg.reply(array + ",fumble"); 22 } else if (array <= 5) { 23 msg.reply(array + ",critical"); 24 } else { 25 msg.reply(array); 26 } 27 } else { 28 const total = array.reduce((sum, element) => sum + element, 0); 29 msg.reply(many + "d" + max + "=" + array + "→[" + total + "]"); 30 }; 31});

試したこと

HTMLでページを作ってそこでGoogleを用いて実行してタスクマネージャー等で確認しても重さを確認できませんでした。

補足情報(FW/ツールのバージョンなど)

glitch,node.js v12,discord.j ^12.5.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こちら、長らく迷っていたところ、自身の発言の参照によるループを生み出していたようで、自分の発言を無視するようにしたら、安定稼働するようになりました。

投稿2021/11/04 01:24

dice.

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そもそもGlitchの常時起動は規約違反です。
(参考までに...GlitchからインポートできるReplitのリンクを張っておきます)

本題のメモリですが、おそらく解決方法はないかと。
有料版に加入するしかないと思います

投稿2021/10/06 01:03

Waki285

総合スコア2014

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice.

2021/10/06 09:33

回答ありがとうございます。 規約違反のご指摘、及びリンクまでいただいて、ご丁寧にありがとうございます。 やはり、これ以上を求める場合は、お金を払うしかないんですね。 趣味の範囲ですので、使う頻度とコストが見合うか考えて実装したいと思います。 ありがとうございました。
guest

0

glitchでもrepl.itでも大して出来ることは変わりないですし、ライブラリのインストールもrepl.itの方が楽ですので良い区切りの時にrepl.itに移行してみてはどうでしょうか。
そうすると永久オンラインが物凄く楽ですよ。

もしどうしてもglitchを使いたい場合はGasで永久オンラインをする方法がオススメです。

投稿2021/10/06 00:08

zettau

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice.

2021/10/06 00:50

回答ありがとうございます。 永久オンラインに関してですが、既にGasを用いての稼働をさせているのでBot未操作によるログアウトが問題というわけではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問