2017-03-16 30 views
-1

基本的には、アナウンスなどのチャンネル名を見つけてメッセージを送信する方法があります。私は、ユーザーが不和を介してメッセージを送信したり、イベントが不和にユーザーからのメッセージなしでDiscord Channelにメッセージを送信

e.Server.FindChannels("Channel Name").FirstorDefault; 
await channel.sendmessage(string.Format("Message")) 

を起これば私はイベントが単収縮で発生したときにメッセージを送信するために探していたときにメッセージを送信する方法を知っています。

TwitchAPIexample.RootObject json = TwitchAPIexample.BuildConnect(); 

    if (TwitchAPIexample.TwitchLive(json)) 
    { 
     var channel = client.GetChannel("announcements"); //Where I need to get channel 
     //Where I need to send message to channel 
    } 

私はからコードを引っ張っていたファイル:

私の現在のコードはこれであなただけのチャンネルを検索する必要が

using System.Net; 
using System.IO; 
using Newtonsoft.Json; 

namespace MyFirstBot.Plugins 
{ 
    public class TwitchAPIexample 
    { 

     private const string url = "https://api.twitch.tv/kraken/streams/channel"; 

     public bool isTwitchLive = true; 

     public static RootObject BuildConnect() 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

      request.Method = "Get"; 
      request.Timeout = 12000; 
      request.ContentType = "application/json"; 
      request.Headers.Add("authorization", "Token"); 

      using (System.IO.Stream s = request.GetResponse().GetResponseStream()) 
      { 
       using (StreamReader sr = new System.IO.StreamReader(s)) 
       { 
        var jsonResponse = sr.ReadToEnd(); 
        RootObject r = JsonConvert.DeserializeObject<RootObject>(jsonResponse); 
        return r; 
       } 
      } 
     } 


     public class Preview 
     { 
      public string small { get; set; } 
      public string medium { get; set; } 
      public string large { get; set; } 
      public string template { get; set; } 
     } 

     public class Channel 
     { 
      public bool mature { get; set; } 
      public string status { get; set; } 
      public string broadcaster_language { get; set; } 
      public string display_name { get; set; } 
      public string game { get; set; } 
      public string language { get; set; } 
      public int _id { get; set; } 
      public string name { get; set; } 
      public string created_at { get; set; } 
      public string updated_at { get; set; } 
      public bool partner { get; set; } 
      public string logo { get; set; } 
      public string video_banner { get; set; } 
      public string profile_banner { get; set; } 
      public object profile_banner_background_color { get; set; } 
      public string url { get; set; } 
      public int views { get; set; } 
      public int followers { get; set; } 
     } 

     public class Stream 
     { 
      public long _id { get; set; } 
      public string game { get; set; } 
      public int viewers { get; set; } 
      public int video_height { get; set; } 
      public int average_fps { get; set; } 
      public int delay { get; set; } 
      public string created_at { get; set; } 
      public bool is_playlist { get; set; } 
      public Preview preview { get; set; } 
      public Channel channel { get; set; } 
     } 

     public class RootObject 
     { 
      public Stream stream { get; set; } 
     } 

     public static bool TwitchLive(RootObject stream) 
     { 
      TwitchAPIexample twitch = new TwitchAPIexample(); 
      string test = stream.stream.ToString(); 
      if(test == null) 
      { 
       twitch.isTwitchLive = false; 
       return false; 
      } 
      else if(test != null & twitch.isTwitchLive == false) 
      { 
       twitch.isTwitchLive = true; 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    } 
} 
+0

@caesay、男は、私はこのうち***を研究しておらず、そのだけで任意の入力なしで不和に送信されたときにそれを見つける傾けることを考え続けます。私は私の質問で、私はそれが以前のもので私のためにコード化されていないことを言った。ちょうど私にそれを説明するのを助けるために、私は学ぶことができます。私は何かに執着していましたが、今では特定のコード行に助けを求めています。文字通り、ユーザーからの入力なしでチャンネルを取得する方法。 –

答えて

1

、ライブラリのdocuementationはこちら:http://rtd.discord.foxbot.me/

私たちが特定のプロパティ(チャネルが生きているかどうか)をチェックしているだけの場合、すべてのツイッチレスポンスオブジェクトを含む理由はありません。 JSONツリーをトラバースして特定の項目を探すのは簡単です。

私は以下のコードで問題を完了し、学習に役立つことを期待してコメントを追加しました。コンソールアプリケーションのProgram.csに次のコードを貼り付けます。

あなたは、単にこのコードを使用していることを行うことができます
static void Main(string[] args) 
{ 
    DiscordClient client = null; 
    // initialize client etc here. 

    string twitchStreamId = ""; 
    string twitchApiKey = ""; 
    string discordServerName = ""; 
    string discordChannelName = ""; 

    // find discord channel 
    var server = client.FindServers(discordServerName).FirstOrDefault(); 
    var channel = server.FindChannels(discordChannelName, ChannelType.Text).FirstOrDefault(); 

    var lastTwitchStatus = CheckTwitchStatusIsOnline(twitchStreamId, twitchApiKey); 

    // send a message on startup always 
    SendDiscordChannelMessage(channel, lastTwitchStatus); 

    while (true) 
    { 
     // check the status every 10 seconds after that and if the status has changed we send a message 
     Thread.Sleep(10000); 

     var status = CheckTwitchStatusIsOnline(twitchStreamId, twitchApiKey); 

     // if the status has changed since the last time we checked, send a message 
     if (status != lastTwitchStatus) 
      SendDiscordChannelMessage(channel, status); 

     lastTwitchStatus = status; 
    } 
} 

private static void SendDiscordChannelMessage(Channel channel, bool twitchIsOnline) 
{ 
    channel.SendMessage(twitchIsOnline ? "Twitch channel is now live!!" : "Twitch channel is now offline :("); 
} 

private static bool CheckTwitchStatusIsOnline(string streamId, string twitchApiKey) 
{ 
    // send a request to twitch and check whether the stream is live. 
    var url = "https://api.twitch.tv/kraken/streams/" + streamId; 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "GET"; 
    request.Timeout = 12000; 
    request.ContentType = "application/json"; 
    request.Headers.Add("authorization", twitchApiKey); 

    using (var sr = new StreamReader(request.GetResponse().GetResponseStream())) 
    { 
     var jsonObject = JObject.Parse(sr.ReadToEnd()); 
     var jsonStream = jsonObject["stream"]; 

     // twitch channel is online if stream is not null. 
     var twitchIsOnline = jsonStream.Type != JTokenType.Null; 
     return twitchIsOnline; 
    } 
} 
+0

ありがとうございます。私は、セクション全体をコピーしたくないので、私のものが動作しない限り、コードをコピーするつもりはありません。私は不和のセクションがどのように働くのか理解しようとします。そして、それは私が研究するのが悪いということではなく、私はgithubを解読して理解するのに十分なほどC#を知っていません。それは私がここに来てなぜガイダンスを求めているのか?申し訳ありませんが、私が怠け者のように来た場合。しかし、私は勉強しようとしていますが、このプログラムは私が学ぶために使っているものです。 サーバーとチャネルを検索していただきありがとうございます。私はそれを組み入れた –

+0

これは1年以上前に起こったことを知っている、そしてこれは実際に私が望むことをするためのものではない - しかし、あなたはザックのために余分に行って、彼はあなたをアップアップしなかった... –

0

var channelName = client.GetChannel(channelID); 
channelName.SendMessage("test"); 

- > CHANNELNAMEは、チャンネルのちょうど変数名である、あなたはそれを呼び出すことができますが、

たいeverythig - >クライアントDiscordClientの名前です。私はそれをクライアントと呼んだので、ここで使用しました。

- > ChannelIDは、メッセージを送信したいチャンネルのIDです.Disordで開発者モードを有効にすると、チャンネルIDを取得できます。

か短い:

client.GetChannel(channelID).SendMessage("test"); 
関連する問題