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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

0回答

629閲覧

discord.jsをv11.6.4からv13.6.0にアップデート後コードが動かなくなった

退会済みユーザー

退会済みユーザー

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2022/05/11 06:33

編集2022/05/11 06:35

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

10回おみくじを引くというプログラムが動かなくなりました。
エラーは出ませんがメッセージを入力してもbotが反応しません。

該当のソースコード

discord.js

1const http = require('http'); 2const querystring = require('querystring'); 3const discord = require('discord.js'); 4const { Client, Intents } = require('discord.js'); 5 6const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); 7 8http.createServer(function(req, res){ 9 if (req.method == 'POST'){ 10 var data = ""; 11 req.on('data', function(chunk){ 12 data += chunk; 13 }); 14 req.on('end', function(){ 15 if(!data){ 16 res.end("No post data"); 17 return; 18 } 19 var dataObject = querystring.parse(data); 20 console.log("post:" + dataObject.type); 21 if(dataObject.type == "wake"){ 22 console.log("Woke up in post"); 23 res.end(); 24 return; 25 } 26 res.end(); 27 }); 28 } 29 else if (req.method == 'GET'){ 30 res.writeHead(200, {'Content-Type': 'text/plain'}); 31 res.end('Discord Bot is active now\n'); 32 } 33}).listen(3000); 34 35client.on('ready', message =>{ 36 console.log('Botの準備が完了しました'); 37 client.user.setActivity('げーむ', { type: 'WATCHING' }); 38}); 39 40 41 42// おみくじを10回引く 43client.on('message', message =>{ 44 var i; 45 if (message.content.match(/おみくじ/)){ 46 // 10回繰り返す 47 for(i=0;i<10;i++){ 48 // 確率を抽選 49 var random = Math.floor( Math.random() * 100 + 1 ); 50 // 抽選結果で分岐(8%) 51 if(random <= 8){ 52    let arr = [ 53 "大吉","中吉" 54 ]; 55 lottery(message.channel.id, arr); 56 } 57 // 抽選結果で分岐(20%) 58 if(random > 8 && random <= 28){ 59    let arr = [ 60 "小吉","吉" 61 ]; 62 lottery(message.channel.id, arr); 63 } 64 // 抽選結果で分岐(72%) 65 if(random > 28){ 66    let arr = [ 67 "凶","大凶" 68 ]; 69 lottery(message.channel.id, arr); 70 } 71 } 72 } 73}); 74 75function lotteryByWeight(channelId, arr, weight){ 76 let totalWeight = 0; 77 for (var i = 0; i < weight.length; i++){ 78 totalWeight += weight[i]; 79 } 80 let random = Math.floor(Math.random() * totalWeight); 81 for (var i = 0; i < weight.length; i++){ 82 if (random < weight[i]){ 83 sendMsg(channelId, arr[i]); 84 return; 85 }else{ 86 random -= weight[i]; 87 } 88 } 89 console.log("lottery error"); 90} 91 92 93if(!process.env.DISCORD_BOT_TOKEN){ 94 console.log('DISCORD_BOT_TOKENが設定されていません。'); 95 process.exit(1); 96} 97 98client.login( process.env.DISCORD_BOT_TOKEN ); 99 100 101function sendReply(message, text){ 102 message.reply(text) 103 .then(console.log("リプライ送信: " + text)) 104 .catch(console.error); 105} 106 107function sendMsg(channelId, text, option={}){ 108 client.channels.get(channelId).send(text, option) 109 .then(console.log("メッセージ送信: " + text + JSON.stringify(option))) 110 .catch(console.error); 111}

試したこと

ネットで情報を調べてv13用に色々書き換えたのですが肝心のおみくじの処理の部分の書き方がどう変わったのか分かりませんでした。

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

Discord.js v13 Glitch

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

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

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

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

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

airRnot1106

2022/06/09 13:56

lottery関数が定義されていないように見えるのですが、lotteryByWeightの間違いですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問