C# 如何使用visual 2013在telegrambot中处理此错误?
当用户端通过webform请求bot时,我希望通过bot电报响应任何消息,但是当rs.message的值为null时,程序错误 错误: BotTelegramWeb.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码中处理 C#2013年更新3 网络表单2013更新3 摘要代码:C# 如何使用visual 2013在telegrambot中处理此错误?,c#,asp.net,webforms,telegram-bot,C#,Asp.net,Webforms,Telegram Bot,当用户端通过webform请求bot时,我希望通过bot电报响应任何消息,但是当rs.message的值为null时,程序错误 错误: BotTelegramWeb.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码中处理 C#2013年更新3 网络表单2013更新3 摘要代码: using System; using System.Collections.Generic; using System.Linq; using System.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Helpers;
using System.IO;
using Newtonsoft.Json;
using System.Net;
namespace BotTelegramWeb
{
public partial class TaktopBot : System.Web.UI.Page
{
//Api bot = new Api("Token");
Telegram.Bot.TelegramBotClient Bot = new Telegram.Bot.TelegramBotClient("Token");
public class mydata
{
public result[] result;
}
public class result
{
public int update_id { get; set; }
public message message { get; set; }
}
public class message
{
public int message_id { get; set; }
public message_from from { get; set; }
public message_chat chat { get; set; }
public int date { get; set; }
public string text { get; set; }
}
public class message_from
{
public int ind { get; set; }
public string first_name { get; set; }
public string username { get; set; }
}
public class message_chat
{
public int id { get; set; }
public string first_name { get; set; }
public string username { get; set; }
}
public static void SendMessage(string chat_id, string message)
{
WebRequest req = WebRequest.Create("https://api.telegram.org/Token/sendMessage?chat_id=@BestLaptopBuyTest&text=123");
req.UseDefaultCredentials = true;
var result = req.GetResponse();
req.Abort();
}
protected void Page_Load(object sender, EventArgs e)
{
WebRequest req = WebRequest.Create("https://api.telegram.org/bot" + "Token" + "/getUpdates");
req.UseDefaultCredentials = true;
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
sr.Close();
var jobject = Newtonsoft.Json.Linq.JObject.Parse(s);
mydata gg = JsonConvert.DeserializeObject<mydata>(jobject.ToString());
List<result> results = new List<result>();
foreach (result rs in gg.result)
{
results.Add(rs);
SendMessage(rs.message.chat.id.ToString(), "hello" + " " + "Dear" + rs.message.chat.first_name);
}
}
}
}
请尝试以下代码
int Offset = 0 ;
WebRequest req = WebRequest.Create("https://api.telegram.org/bot" + "Token" + "/getUpdates?offset=" + Offset;);
req.UseDefaultCredentials = true;
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
sr.Close();
var jobject = Newtonsoft.Json.Linq.JObject.Parse(s);
mydata gg = JsonConvert.DeserializeObject<mydata>(jobject.ToString());
List<result> results = new List<result>();
foreach (result rs in gg.result)
{
results.Add(rs);
SendMessage(rs.message.chat.id.ToString(), "hello" + " " + "Dear" + rs.message.chat.first_name);
}
int Offset=0;
WebRequest req=WebRequest.Create(“https://api.telegram.org/bot“+”标记“+”/getUpdates?offset=“+offset;”);
req.UseDefaultCredentials=true;
WebResponse resp=req.GetResponse();
Stream=resp.GetResponseStream();
StreamReader sr=新的StreamReader(流);
字符串s=sr.ReadToEnd();
高级关闭();
var jobject=Newtonsoft.Json.Linq.jobject.Parse;
mydata gg=JsonConvert.DeserializeObject(jobject.ToString());
列表结果=新列表();
foreach(聚合结果中的结果)
{
结果:添加(rs);
SendMessage(rs.message.chat.id.ToString(),“你好”+“亲爱的”+rs.message.chat.first_name);
}
1.仅新更新的偏移量。
2.本地测试后使用的webhook。
3.对于跳过null,请使用并测试callbackQuery。谢谢您的回答。测试此代码,但是(bottelegrameb.TaktopBot.message.Equals(rs,null))始终为false,即使rs.message为null。谢谢,这对于偏移量是可以的。您知道更新对象可以有多种类型吗?看不到如何解析代码中的channel_post对象,所以它肯定为null,所以channel post为null?!!!你看到了吗?@anatol这是vs 2015的运行示例?
int Offset = 0 ;
WebRequest req = WebRequest.Create("https://api.telegram.org/bot" + "Token" + "/getUpdates?offset=" + Offset;);
req.UseDefaultCredentials = true;
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
sr.Close();
var jobject = Newtonsoft.Json.Linq.JObject.Parse(s);
mydata gg = JsonConvert.DeserializeObject<mydata>(jobject.ToString());
List<result> results = new List<result>();
foreach (result rs in gg.result)
{
results.Add(rs);
SendMessage(rs.message.chat.id.ToString(), "hello" + " " + "Dear" + rs.message.chat.first_name);
}