Пример #1
0
        private async void BotClient_NewMessageEventHandler(object sender, TLObjectEventArgs e)
        {
            try
            {
                if (RawUpdatesCheckbox.Checked)
                {
                    AddToLog(e.TLObject.ToString());
                }

                var FromUser = e.TLObject["from_user"];
                var ToPeer   = e.TLObject["to_peer"];

                var FromName = "";
                var ToName   = "";
                var FromId   = 0;
                var ToId     = 0;

                if (ToPeer.Value <string>("_") == "channel")
                {
                    ToName = ToPeer.Value <string>("title");
                }
                else
                {
                    ToName = $"{ToPeer.Value<string>("first_name")} {ToPeer.Value<string>("last_name")}".Trim();
                }

                FromName = FromUser.Type != JTokenType.Null
                    ? $"{FromUser.Value<string>("first_name")} {FromUser.Value<string>("last_name")}".Trim()
                    : default;
                if (string.IsNullOrEmpty(FromName))
                {
                    FromName = "No-Name";
                }
                if (string.IsNullOrEmpty(ToName))
                {
                    ToName = "No-Name";
                }
                FromId = FromUser.Type != JTokenType.Null
                    ? FromUser.Value <int>("id")
                    : default;
                ToId = ToPeer.Value <int>("id");

                AddToLog($"{FromName} ({FromId}) -> {ToName} ({ToId}) >>> {e.TLObject["message"].Value<string>("message")}");

                if (FromUser.Type == JTokenType.Null)
                {
                    return;
                }
                if ((bool)e.TLObject["message"]["out"])
                {
                    return;
                }
                if (!(new long[] { 876650892, 960462, 295152997, 976906477 }).Contains((long)FromUser["id"]))
                {
                    return;
                }
                //if (!(new long[] { 848427085, 234480941, 313742192, 537790376 }).Contains(FromId)) return;

                TLObject ShouldReplyTo;
                if ((int)botClient.CurrentUser["id"] == (int)ToPeer["id"])
                {
                    ShouldReplyTo = new TLObject(FromUser);
                }
                else
                {
                    ShouldReplyTo = new TLObject(ToPeer);
                }

                switch ((string)e.TLObject["message"]["message"])
                {
                case ";ping":
                    var first           = DateTime.Now;
                    var UpdateEventArgs = await botClient.SendMessage(ShouldReplyTo, "<b>Status</b>\n\n<code>✅ Online</code>\n\n<i>(calculating lag...)</i>");

                    double lag = Math.Round((DateTime.Now - first).TotalMilliseconds, 2);

                    UpdateEventArgs = await botClient.EditMessage(ShouldReplyTo, UpdateEventArgs, $"<b>Status</b>\n\n<code>✅ Online</code>\n\n(<i>reply took {lag}ms</i>)");

                    break;

                case ";code":
                    await botClient.SendMessage(ShouldReplyTo, $"<code>{e.TLObject["message"].ToString()}</code>");

                    break;

                case ";whois":
                    //long UserId = -335698371; //-10010356929597;

                    //UpdateEventArgs u = await botClient.GetChat(UserId);

                    //await botClient.SendMessage(ShouldReplyTo, u.RawUpdate.ToString());
                    break;

                default:

                    break;
                }
            }
            catch (Exception ex)
            {
            }
        }