How to handle multiple users on a Telegram box in C #?

I wrote a bot that asks for your name and writes it to a photo and sends it to you, and it works. But the problem is that there is more than one user on the bot. It does not work and does not work, and I would like to know how to separate the records and results of users (for example, each user who connects receives a separate session, because now everything happens in one session and crash) This is my code:

    void bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
    {
     KeyboardButton[] btns = new KeyboardButton[1];
     btns[0] = new KeyboardButton("ساخت عکس");
        if(e.Message.Text=="ساخت عکس")
        {
            bot.SendTextMessageAsync(e.Message.From.Id, "نام خود را وارد کنید", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0);
           // e.Message.Text = null;
            shart = 1;

        }
        else
        {
            if (shart == 0)
            {
                Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup markup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(btns);

                bot.SendTextMessageAsync(e.Message.From.Id, "برای شروع و ساخت عکس روی دکمه ساخت عکس کلید کنید", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, markup);
            }
            if (shart==1)
            {
                bot.StartReceiving();
                bot.OnMessage += bot_OnMessage1;
            }
        }
    }

    void bot_OnMessage1(object sender, Telegram.Bot.Args.MessageEventArgs a)
    {
        string watermarkText = a.Message.Text;

        //Get the file name.
        string fileName = "C:\\temp\\01.jpg";

        //Read the File into a Bitmap.
        using (Bitmap bmp = new Bitmap(fileName))
        {
            using (Graphics grp = Graphics.FromImage(bmp))
            {
                //Set the Color of the Watermark text.
                Brush brush = new SolidBrush(Color.White);

                //Set the Font and its size.
                Font font = new System.Drawing.Font("Arial", 50, FontStyle.Bold, GraphicsUnit.Pixel);

                //Determine the size of the Watermark text.
                SizeF textSize = new SizeF();
                textSize = grp.MeasureString(watermarkText, font);

                //Position the text and draw it on the image.
                Point position = new Point((bmp.Width - ((int)textSize.Width + 10)), (bmp.Height - ((int)textSize.Height + 10)));
                grp.DrawString(watermarkText, font, brush, position);
                bmp.Save("c:\\temp\\postpic.jpg", ImageFormat.Png);

                using (FileStream fs = new FileStream("c:\\temp\\postpic.jpg", FileMode.Open))
                {

                    fs.CanTimeout.ToString();
                    FileToSend fileToSend = new FileToSend("postpic.jpg", fs);
                    //  var =   FileToSend fts = new FileToSend("postpic", fs);
                    var rep = bot.SendPhotoAsync(a.Message.From.Id, fileToSend, "این عکس را پست کنید").Result;

                }
            }
        }
    }
}
+4
source share
2 answers

You write (and subsequently read) the same file for each user:

mp.Save("c:\\temp\\postpic.jpg"

. , . , , , , .

+5

.

-.

:

  • chatID - . .
  • .

, . https://github.com/strongo/bots-framework URL, :

command_name1/command_name2?param1=value2&param2=value2

- .

, , https://t.me/DebtsTrackerBot

+1

Source: https://habr.com/ru/post/1688076/


All Articles