Skip to content
This repository has been archived by the owner on Jul 2, 2022. It is now read-only.

mahdiit/gapsharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GapSharp

Unofficial Gap.im Bot Sdk and Samples

Nuget

نمونه کد اتصال به پیام رسان گپ و ایجاد بات

پیاده سازی شده بر اساس اطلاعات موجود در بخش توسعه دهندگان سایت گپ

بصورت رست پیاده سازی شده است به همین دلیل نیاز به کتابخانه های زیر هست:

کدها بصورت متد پیاده سازی شده اند

توضیح:

پیام رسان های داخل ایران دارای مشکلات زیر ساختی فراوانی هستن گرچه هر کدام محیط های توسعه دارن ولی چندان انتظار ساختارهایی شبیه تلگرام را نداشته باشین در زمان نگارش این متن بسیاری از عملکرد آنها به درستی کار نمیکنند

Using GapClient

1- Base class is GapClinet, you need to live this client in your app so please consider it as single you can init this class in Global.asax and make it static

Cm.Client = new GapClient("GapBotToken")
            {
                //set text logger path to app_data folder in app settings
                Logger = new SimpleTextLogger("Pointto\\Log\\Dir\\", "DefaultLogLevel")
            };

you need a logger class, if you do not need log set Logger to DisabledLogger, SimpleTextLogger will log on text file, you can also write you own logger or use Log4Net or NLog in your project see sample implemented logger in project directory

protected void Application_Start()
        {
            Cm.Client = new GapClient("GapBotToken")
            {               
                //set text logger path to app_data folder in app settings
                Logger = new SimpleTextLogger("Pointto\\Log\\Dir\\", "DefaultLogLevel")
            };

            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            Cm.Client.Logger.Log("Application_Start");
        }

Cm.Client is a static class, you can call Client.Logger to log everythings

public static class Cm
    {
        public static GapClient Client { get; set; }
	}

example of Error log in application

protected void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            Exception ex = Server.GetLastError();
            Cm.Client.Logger.Log("Application_Error", LogErrorLevel.Error, ex);
        }

2- Using GapClient to send message in Asp.net MVC create a controller Named Gap, created a method Named GetData

namespace GapBotWeb.Controllers
{
    public class GapController : Controller
    {
        [HttpPost]
        public ActionResult GetData()
        {
            var posted = Cm.Client.ExtractPostedMessage(Request);

            //detect user
            var user = DbHelper.Get(posted.ChatId);

            //go to proccess command
            Task.Run(() =>
            {
                Cm.GetPrMsg(user.State).Proccess(posted);
            });

            return new HttpStatusCodeResult(HttpStatusCode.OK);
        }
    }
}

send a user text message:

Cm.Client.SendMessage(new SendMessageInput()
            {
                Data = "سلام ",
                ChatId = message.ChatId,
                MessageType = SendMessageType.text
            });

Using Builders

What is builders? you need builder to generate

  • Form
  • Inline Keyboard
  • Reply Keyboard

how? first for keyboards (inline or reply) you need to add a Row then add keys to your keyboards

var builder = new InlineButtonBuilder();
                builder.AddRow()
                    .AddCbData("کلید اول", "A1").AddCbData("کلید دوم در همان ردیف", "A2")
                    .AddRow()
                    .AddAmount("پرداخت", 2000, CurrencyType.Irr, "XXXXX", "پرداخت کنید"); //ردیف بعدی

                Cm.Client.SendMessage(new SendMessageInput()
                {
                    ChatId = message.ChatId,
                    Data = "لطفا کلید مناسب را انتخاب کنید",
                    InlineKeyboard = builder.ToString(),
                    MessageType = SendMessageType.text
                });

Preview Class Code

محیط توسعه

  • VS2017
  • .Net 4.6.2
  • Asp.net