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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Discord

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

Q&A

解決済

2回答

6700閲覧

CでDiscordBOTを作りたい

yuina8686

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Discord

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

0グッド

0クリップ

投稿2021/10/07 05:53

編集2021/10/07 06:21

前提・実現したいこと

DiscordBOTをCで作りたいと考えています。
Javascriptやpythonではすでに作っているので本質はわかっているのですが、それをCに結びつける方法がわかりません。
Cで作る方法はありますか?

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

問題というかはわかりませんが、C#の記事はありました。
でもCでやりたいです。

Q.どこで躓いているか
A.モジュールがあるのか通信するのかもわかりませんし、通信の方法もわかりません。

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

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

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

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

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

SaitoAtsushi

2021/10/07 06:19

結論から言えば可能ですが、具体的に何に躓いていますか? C の文法のどこかですか? 通信のやり方がわかりませんか? それとも認証手続きを理解できないのでしょうか? 何がわからないのかわからないので答えられないです。
yuina8686

2021/10/07 06:22

すいません、今編集しました。
guest

回答2

0

ベストアンサー

C は言語仕様には通信に関する機能は含みません。 実行環境 (OS やフレームワーク) が持つ機能を呼び出して使う必要があり、つまりは実行環境によって用意されているものも使い方も異なります。 基本的な部分も自分で作りたいというのでなければ違いを吸収して様々な環境で同じように使えるライブラリを導入するのが楽で、特に人気のある通信ライブラリとしては curl が便利でしょう。

Discord の API は結果を JSON 形式で返しますのでそれをパースするのに便利なライブラリとしては parsonRapidJSONPicoJSON などがあるようです。 JSON は比較的単純な文法なので構文解析の練習の題材だと思って自分でやってみるのもよいかもしれません。

投稿2021/10/07 07:04

SaitoAtsushi

総合スコア5684

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

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

yuina8686

2021/10/07 07:36

要するにモジュールはないからAPIをcurlで通信するという方法しかないんでしょうか? あと、それだとメッセージへの応答はどうやる感じですか?
gx1285

2022/06/05 01:53 編集

libwebsocketsなどでDiscord Gateway APIと通信しないとメッセージを受信できません。
guest

0

Discord.NETを使って開発することができます。
NuGetからDiscord.Netを入れればすぐ開発できます。

Example(公式):
https://github.com/discord-net/Discord.Net/blob/dev/samples/01_basic_ping_bot/Program.cs

Example:

c#

1using System; 2using System.Threading; 3using System.Threading.Tasks; 4using Discord; 5using Discord.WebSocket; 6 7namespace Example 8{ 9 class Program 10 { 11 private readonly DiscordSocketClient _client; 12 13 static void Main(string[] args) 14 { 15 new Program().MainAsync().GetAwaiter().GetResult(); 16 } 17 18 public Program() 19 { 20 _client = new DiscordSocketClient(); 21 22 _client.Log += LogAsync; 23 _client.Ready += ReadyAsync; 24 _client.MessageReceived += MessageReceivedAsync; 25 } 26 27 public async Task MainAsync() 28 { 29 await _client.LoginAsync(TokenType.Bot, "Token"); 30 await _client.StartAsync(); 31 32 await Task.Delay(Timeout.Infinite); 33 } 34 35 private Task LogAsync(LogMessage log) 36 { 37 Console.WriteLine(log.ToString()); 38 return Task.CompletedTask; 39 } 40 41 private Task ReadyAsync() 42 { 43 Console.WriteLine($"Logged In"); 44 45 return Task.CompletedTask; 46 } 47 48 private async Task MessageReceivedAsync(SocketMessage message) 49 { 50 if (message.Author.isBot) { 51 return; 52 } 53 54 if (message.Content == "!ping") { 55 await message.Channel.SendMessageAsync("pong!"); 56 } 57 } 58 } 59}

投稿2021/10/15 03:18

PyPyPyPy

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問