• 締切済み

C#でdiscordのbot開発をしています。

いまC#でbot開発をしています。 using System; using System.IO; using System.Net.Http; using Newtonsoft.Json.Linq; private void Form1_Load(object sender, EventArgs e) { ////今日の天気予報の取得 string baseUrl = "https://weather.livedoor.com/forecast/webservice/json/v1"; //東京都のID string cityname = "130010";    string todayweather; string url = $"{baseUrl}?city={cityname}"; string json = new HttpClient().GetStringAsync(url).Result; JObject jobj = JObject.Parse(json); todayweather = (string)((jobj["forecasts"][0]["telop"] as JValue).Value);//今日の天気の取得 Console.WriteLine(todayweather); } このプログラムを組み込もうとしています。上で定義したtodayweatherを用いて ほかの場所のifで実行したときに表示したいのですが。このようなエラーが出ます。 場所 Discord.Preconditions.NotNullOrEmpty(String obj, String name, String msg) 場所 Discord.API.DiscordRestApiClient.<CreateMessageAsync>d81.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.Rest.ChannelHelper.<SendMessageAsync>d9.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 場所 TestHoge.Program.<CommandRecieved>d__8.MoveNext() 場所 個人情報なんで書けません 178 --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.EventExtensions.<InvokeAsync>d__11.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.WebSocket.DiscordSocketClient.<TimeoutWrap>d__131.MoveNext() string型をどのように利用したらうまくできますか? 回答お願いします。

みんなの回答

  • asciiz
  • ベストアンサー率70% (6642/9410)
回答No.1

アクセスすべきbaseUrlはhttpsじゃなくてhttpですね。 とりあえずそこ直してどうなるでしょうか。

関連するQ&A

  • DiscordのBotについて

    using Discord; using Discord.WebSocket; using System; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { private readonly DiscordSocketClient _client; static void Main(string[] args) { new Program().MainAsync().GetAwaiter().GetResult(); } public Program() { _client = new DiscordSocketClient(); _client.Log += LogAsync; _client.Ready += onReady; _client.MessageReceived += onMessage; } public async Task MainAsync() { await _client.LoginAsync(TokenType.Bot, "トークン"); await _client.StartAsync(); await Task.Delay(Timeout.Infinite); } private Task LogAsync(LogMessage log) { Console.WriteLine(log.ToString()); return Task.CompletedTask; } private Task onReady() { Console.WriteLine($"{_client.CurrentUser} is Running!!"); return Task.CompletedTask; } private async Task onMessage(SocketMessage message) { if (message.Author.Id == _client.CurrentUser.Id) { return; } if (message.Content == "こんにちは") { await message.Channel.SendMessageAsync("こんにちは、" + message.Author.Username + "さん!"); } } } } というコードを書きトークンも自分のものに書き換えたのですが実行するとオフラインからオンラインに切り替わりはするのですが「こんにちは」を送っても反応しません。Discord上では管理者権限をあたえているのですが、なにがいけないのでしょうか。知識まったくの皆無で申し訳ありません。 どうかお力を貸していただけると幸いです。。。

  • ASP.NET C# ローカルのパスが呼ばれる

    お世話になります。 サーバはWindows Server2008 IIS6.0で、開発環境がWindows8 Visual Visual Studio 2010です。 サーバ環境にローカルで作成したソースをビルド後、アップロードすると下記エラーにて動作しません。 C:\Users\hoge\Documents\Visual Studio 2010\Projects\project\WebApplication1\index.aspx.cs:120 下記エラーを見ると、ローカルのパスが表示されている点と、 該当の行のSQLコネクション部分が怪しいと思うのですが、原因が全くわかりません。 120行目 if (sqlCon1 != null) sqlCon1.Close(); 恐れ入りますが、お分かりになる方がいらっしゃいましたら、 教えていただけますでしょうか? '/' アプリケーションでサーバー エラーが発生しました。 値を Null にすることはできません。 パラメーター名: String 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.ArgumentNullException: 値を Null にすることはできません。 パラメーター名: String ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [ArgumentNullException: 値を Null にすることはできません。 パラメーター名: String] System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +12636395 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +224 WebApplication1.btn_Click(Object sender, EventArgs e) in C:\Users\hoge\Documents\Visual Studio 2010\Projects\project\WebApplication1\index.aspx.cs:120 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707

  • ASP.NETの実行時のエラーについて

    ASP.NETを勉強しているのですが、DataGridを用いて単にDBの中身を表示させようとしたのですが、次のエラーが出て実行できません。 「System.StackOverflowException の例外がスローされました」 例外の詳細: System.StackOverflowException: 種類 System.StackOverflowException の例外がスローされました。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [StackOverflowException: 種類 System.StackOverflowException の例外がスローされました。] このエラーはどのような意味なのでしょうか。調べているのですが、よくわかりません。 解決法を教えていただけないでしょうか。 よろしくお願いいたします。

  • フォルダにアクセスできません。

    MSVS2003で、C#で書かれたWebプログラムのデバッグをしようとしていたのですが、 デバッグはできずメッセージボックスが出て、 デバッグなしで実行をすると、ブラウザで以下のエラーが出てしまいます。 何の設定が足りない、おかしいのでしょうか、 どなたかご教授ください。 また、他に何か必要な情報があったら教えて下さい。 よろしくお願いいたします。 ------------------------------------------------------------ 'c:\inetpub\wwwroot\WebApplication1\' へのアクセスは拒否されました。ファイル変更の監視を開始できませんでした。 説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.Web.HttpException: 'c:\inetpub\wwwroot\WebExchangeTest\' へのアクセスは拒否されました。ファイル変更の監視を開始できませんでした。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [HttpException (0x80070005): 'c:\inetpub\wwwroot\WebExchangeTest\' へのアクセスは拒否されました。ファイル変更の監視を開始できませんでした。] System.Web.DirMonCompletion..ctor(DirectoryMonitor dirMon, String dir, Boolean watchSubtree, UInt32 notifyFilter) +140 System.Web.DirectoryMonitor.StartMonitoring() +42 System.Web.DirectoryMonitor.StartMonitoringFile(String file, FileChangeEventHandler callback, String alias) +154 System.Web.FileChangesMonitor.StartMonitoringDirectoryRenamesAndBinDirectory(String dir, FileChangeEventHandler callback) +278 System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +331 [HttpException (0x80004005): ASP.NET 初期化エラー] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +982 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +128 ------------------------------------------------------------

  • cmd /c rd/s /q c:を実行してしまった

    PCを起動すると、http://h1.mistysky.net/error.jpg の様なエラーメッセージが表示されます。 それは多分、cmd /c rd/s /q c:を実行してしまったからだと 思うのですが、この問題に関しては特に不具合がないもので このまま使い続けようと考えています。 ですがただ1つ気になるのがこのエラーメッセージで、 このエラーの出所が何であるかわかる方はいらっしゃいませんか? 以下、エラーについての詳細です。 宜しくお願い致します。 ************** 例外テキスト ************** System.InvalidCastException: String "<br /> <b>Warning</b>: mysql_co" から型 'Double' への変換は無効です。 ---> System.FormatException: 入力文字列の形式が正しくありません。 場所 Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) 場所 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat) --- 内部例外スタック トレースの終わり --- 場所 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat) 場所 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value) 場所 CPAX20.utilities.Dec(String strCode) 場所 CPAX20.Form1.tmrLink_Tick(Object sender, EventArgs e) 場所 System.Windows.Forms.Timer.OnTick(EventArgs e) 場所 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m) 場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、 またはコンピュータ (machine.config) の構成ファイルの jitDebugging 値を system.windows.forms セクションで設定しなければなりません。 アプリケーションはまた、デバッグを有効にしてコンパイルされなければ なりません。

  • エラー

    このカテゴリーでいいのかわかりませんが、わかる方、教えてください。以下のようなエラーがでます。なぜでしょうか? '/SSO2/School/SSOLogin' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- オブジェクト参照がオブジェクト インスタンスに設定されていません。 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。] SSOLoginMonitor.Global.Application_BeginRequest(Object sender, EventArgs e) +46 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.42; ASP.NET バージョン:2.0.50727.42

  • C#からDLLを呼びたいのですが・・・

    C#のASP.NET WebアプリケーションのDLLをC#のWindowsFormのexeで呼び出そうとしています。 すると 'System.EntryPointNotFoundException' のハンドルされていない例外が FTPApi.exe で発生しました。 追加情報 : DLL SampleApi.dll の GetURL というエントリ ポイントが見つかりません。 というエラーメッセージが表示されてしまいます。 クラス上部で [System.Runtime.InteropServices.DllImport("SampleApi.dll", EntryPoint="GetURL")] public static extern string GetURL(); と宣言した後、呼び出したい場所で、 strUrlPath = GetURL(); と呼んでいます。 よろしくお願いします。

  • C#でのUNZIP32.DLLの利用方法が・・・

    「C#」で圧縮ファイルの中身を確認するためUNZIP32.DLLを利用しようと思うのですが、上手くいきません。 ためしに、UNZIP32.DLLのバージョン情報を獲得しようとしたのですが、以下のエラーが発生します。 'System.NuLLReferenceException'のハンドルされていない例外がWindowsApplication.exeで発生しました。 追加情報:オブジェクト参照がオブジェクトインスタンスに設定されていません。 ------------------------------------------- ソース ------------------------------------------- using System.Runtime.InteropServices; (略) [DllImport(@"D:\WINNT\system32\UNZIP32.DLL", EntryPoint="UnZipGetVersion")] public static extern string MyUnZipGetVersion(); (略) private void button1_Click(object sender, System.EventArgs e) { //MyMessageBox1(0,"by ANSI","Hello!",0); this.textBox1.Text = MyUnZipGetVersion(); } ご協力お願いします。(V^-°)

  • 東進学力POSにログインできません。

    ID、パスワードを入力してログインボタンを押すと、 '/SSO1/SSOLOGIN' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- オブジェクト参照がオブジェクト インスタンスに設定されていません。 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。] SSOLoginMonitor.Global.Application_BeginRequest(Object sender, EventArgs e) +46 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.1433; ASP.NET バージョン:2.0.50727.1433 ↑のような画面が表示されます。 パソコンに詳しくないので意味がわかりません。 校舎の職員の方に聞いても「よくわからない・・・」との事で ほかのパソコンでは問題なくログインできます。 詳しい方ぜひ対処法を教えてください<(_ _)>

  • スタックトレースについて

    スタックトレースを出力して、例外をそのままスローする。 と、仕様の最後に書かれていたのですが、どうやればいいのかわかりません。 たとえば下記のソースだったらどう加えればいいのでしょうか? import java.io.*; class Test { public static void main(String args[]) throws IOException { System.out.println( args[0] + "の起動"); System.out.println("入力してください"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String PP; PP = br.readLine(); System.out.println( PP + "が入力されました"); } }

    • ベストアンサー
    • Java