ساخت ربات تلگرامی با #C
نویسنده: اختیاری
تاریخ: ۱۳۹۴/۰۵/۰۳ ۱۰:۵۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
You can control me by sending these commands : / newbot - create a new bot / token - generate authorization token / revoke - revoke bot access token / setname - change a bot's name / setdescription - change bot description / setabouttext - change bot about info / setuserpic - change bot profile photo / setcommands - change bot commands list / setjoingroups - can your bot be added to groups ? / setprivacy - what messages does your bot see in groups ? / deletebot - delete a bot / cancel - cancel the current operation
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 Void GetUpdates()
{
WebRequest req = WebRequest.Create("https://api.telegram.org/bot" + yourToken + "/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);
}
} public static void SendMessage(string chat_id, string message)
{
WebRequest req = WebRequest.Create("https://api.telegram.org/bot" + youToken + "/sendMessage?chat_id=" + chat_id + "&text=" + message);
req.UseDefaultCredentials = true;
var result = req.GetResponse();
req.Abort();
} {"ok":false,"error_code":403,"description":"Error: Bot can't send messages to bot"}
چت آی دی باید چی باشه؟using (var client = new HttpClient()) .... .... using (var response = await client.SendAsync(httpMessage).ConfigureAwait(false))
client.DefaultRequestHeaders.ExpectContinue = false; client.Timeout = TimeSpan.FromMilliseconds(150000);
pm> Install-Package Telegram.Bot
https://api.telegram.org/bot[bot-token]/setwebhook
https://api.telegram.org/bot[bot-token]/setwebhook?url=https://yourdomain.example/api/webhook protected void Page_Load(object sender, EventArgs e)
{
long offset = 0;
var Bot = new Telegram.Bot.TelegramBotClient("Token");
int whilecount = 0;
while (true)
{
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)
{
try
{
//Debug.Assert(message != null, "message != null");
//if ((BotTelegramWeb.TaktopBot.message.Equals(rs, null))!= true)
if (rs.update_id != 547758883 && rs.update_id !=547758886)
{
results.Add(rs);
SendMessage(rs.update_id.ToString(), "hello " + rs.message.chat.first_name);
}
else
{
continue;
}
}
catch (Exception ex)
{
throw;
}
}
}
}
} using System.Threading.Tasks;
using Telegram.Bot;
namespace Bot.Engine.Console
{
public class Program
{
Api bot;
string botToken = "BOT_TOKEN";
public static void Main(string[] args)
{
Task.Run(() => RunBot(botToken));
System.Console.ReadLine();
}
/// <summary>
///
/// </summary>
public static async Task RunBot(string botToken)
{
#region راه اندازی ربات
bot = new Api(botToken);
var me = await bot.GetMe();
if (me != null)
{
System.Console.WriteLine("bot started {0}", me.Username);
}
else
{
System.Console.WriteLine("get bot failed ");
}
#endregion
#region شروع گوش دادن به درخواستها var whileCount = 0;
var offset = 0;
while (true)
{
System.Console.WriteLine("while no {0}", whileCount);
whileCount += 1;
try
{
var updates = await bot.GetUpdatesAsync(offset);
var updatesCount = updates.Count();
System.Console.WriteLine("updates count is {0}", updatesCount);
System.Console.WriteLine("================================================================");
if (updatesCount > 0)
{
foreach (var update in updates)
{
try
{
offset = update.Id + 1;
if (update.Message.Text!=null)
{
//echo msg
await bot.SendTextMessageAsync(update.Message.Chat.Id, update.Message.Text);
}
else
{
await bot.SendTextMessageAsync(update.Message.Chat.Id, "لطفا یک پیام متنی بفرستید");
}
}
catch (Exception ex)
{
bot.SendTextMessage(update.Message.Chat.Id, ex.ToString());
}
}
continue;
}
}
catch (Exception ex)
{
System.Console.WriteLine("Error Msg = {0}",ex.Message);
}
}
#endregion
}
}
} // Endpoint musst be configured with netsh:
// netsh http add urlacl url=https://+:8443/ user=<username>
// netsh http add sslcert ipport=0.0.0.0:8443 certhash=<cert thumbprint> appid=<random guid>
using (WebApp.Start<Startup>("https://+:8443")) netsh http add urlacl
using (WebApp. Start<Startup> ( "https://+:8443" ) )
bot.sendMessage(USER, 'How old are you?', opts)
.then(function (sended) {
var chatId = sended.chat.id;
var messageId = sended.message_id;
bot.onReplyToMessage(chatId, messageId, function (message) {
console.log('User is %s years old', message.text);
});
}); foreach (var update in updates)
{
try
{
offset = update.Id + 1;
if (Text == "/start")
{
میره از دیتابیس دادهها رو میاره و نمایش میده که مثلا چند حرف و پیام میده که یک حرف را وارد کنید
await bot.SendTextMessageAsync(update.Message.Chat.Id, "حرف را وارد کنید "+kalame);
}
else if (Text.length=1)
{
اگر حرف وارد شد اونوقت میره چک میکنه حرف درسته و میشونه محل مورد نظر در خونه خالی و پیام میده اگر موفقیت امیز بود که صحیح است به همراه جا خالی و حرف درست و اگر غلط بودش پیام مربوطه
await bot.SendTextMessageAsync(update.Message.Chat.Id, "پیام فوق درست است");
}
else
{
continue;
}
}
catch (Exception ex)
{
continue;
}
}
} [test](http://www.example.com/)