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

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

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

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Node.js

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

Q&A

1回答

391閲覧

GASからDiscordAPIを経由してサーバーのチャンネル名を変更したい

HIRE

総合スコア0

Discord

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Node.js

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

0グッド

1クリップ

投稿2024/08/18 03:32

編集2024/08/18 03:34

実現したいこと

GASからDiscordAPIを経由してサーバーのチャンネル名を変更したい

現在、node.jsから
DiscordAPIを経由してサーバーのチャンネル名を変更しています。
(node.jsでは問題なくレスポンス(code200)が帰ってきます)

今後GASから
DiscordAPIを経由してサーバーのチャンネル名を変更したいと考えており、
GASでコードを書いているのですが、エラーが帰ってきて上手く行きません。

発生している問題・分からないこと

GASで実行した場合、下記のエラーが出現する。

Error: Exception: Request failed for https://discord.com returned code 403. Truncated server response: {"message": "internal network error", "code": 40333}

該当のソースコード

node.js

1const axios = require('axios'); 2async function changeChannelName() { 3 const url = 'https://discord.com/api/v10/channels/CHANNEL_ID'; 4 5 const options = { 6 method: 'PATCH', 7 headers: { 8 "Authorization": "Bot BOT_TOKEN", 9 "Content-Type": "application/json" 10 }, 11 data: { 12 "name": "NEW_NAME" 13 } 14 }; 15 16 try { 17 const response = await axios(url, options); 18 console.log('Response Code:', response.status); 19 } catch (e) { 20 console.error('Error:', e.message); 21 } 22} 23changeChannelName();

GAS

1function changeChannelName() { 2 var url = `https://discord.com/api/v10/channels/${CHANNEL_ID}`; 3 4 var options = { 5 method: 'PATCH', 6 7 payload: { 8 "name": "NEW_NAME" 9 } 10 , headers: { 11 "Authorization": `Bot ${BOT_TOKEN}`, 12 "Content-Type": "application/json" 13 } 14 }; 15 16 try { 17 var response = UrlFetchApp.fetch(url, options); 18 Logger.log('Response Code: ' + response.getResponseCode()); 19 } catch (e) { 20 Logger.log('Error: ' + e.toString()); 21 } 22}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

node.jsとGASの違いを一通り調べました。
主に、
axiosー>UrlFetchApp.fetch
への変更だけで、headerの記述内容が若干ことなることなどでした。
上記を踏まえ記述していますが、レスポンスが帰ってこないのでご教授願います。

補足

特になし

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

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

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

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

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

YAmaGNZ

2024/08/18 04:58

ぱっと検索するとGASから直接DiscordのAPIを叩けないといった記事が見つかりました。 質問者さんとはエラーコードが違うので正確なところは分かりませんがそれでエラーとなっているのではないでしょうか。 Cloudflare Workersを経由したらいいといった記事もありましたので調べてみてはどうでしょうか。
guest

回答1

0

GASで実行した場合、下記のエラーが出現する。

Error: Exception: Request failed for https://discord.com returned code 403. Truncated server response: {"message": "internal network error", "code": 40333}

エラーコード 40333 は、 discord のドキュメント Opcodes and Status Codes

40333 Cloudflare is blocking your request. This can often be resolved by setting a proper User Agent

と書かれています。

fetch のパラメータに User Agent を設定してアクセスするとどうなるでしょうか。

投稿2024/08/18 05:31

CHERRY

総合スコア25216

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

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

HIRE

2024/08/18 08:41

返信ありがとうございます。 GASの場合、明示せずとも、自動でUser-Agentがついており、 Mozilla/5.0 (compatible; Google-Apps-Script) 変更することはできない仕様だったと思います。 念のために編集し実行しても同じエラーでした。 headers: {   "Authorization": `Bot ${BOT_TOKEN}`, "Content-Type": "application/json", "User-Agent": "MyCustomUserAgent/1.0" }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問