1

Тема: Відправлення повідомлення користувачу в Телеграм бот

Всім привіт зіткнувся з такою проблемою що неможу надіслати повідомлення користувачу знаючи його чат ід. https://telegrambots.github.io/book/2/s … index.html тут шукав так і не знайшов. Так само в ютубі і гуглі толком нічого немає. Можливо хтось писав бота та знає як це реалізувати.

async static void BuyProducts(int id,int idProduct,ITelegramBotClient client,long chat)
{
    await using(ApplicationContext db = new ApplicationContext())
    {
        UsersDTO user = db.Users.FirstOrDefault(u => u.TelegramID == id);
        SellProducts buyProduct = db.SellProdukts.FirstOrDefault(p => p.Id == idProduct);
        if(user.Balance < buyProduct.Price)
        {
            await client.SendTextMessageAsync(chat, @$"У вас невистачає коштів!
Ваш баланс: {user.Balance} TRX
Вартість на {buyProduct.Name} : {buyProduct.Price} TRX");
        }
        else
        {
            user.Balance -= buyProduct.Price;
            if(buyProduct.Name == "Зерно")
            {
                user.Grain += buyProduct.Count;
            }
            int idclient = buyProduct.TelegramID;
            db.Users.Update(user);
            db.SellProdukts.Remove(buyProduct);
            db.SaveChanges();
            await client.SendTextMessageAsync(chat, "Ви успішно купили Зерно!");
            UsersDTO sendclient = db.Users.FirstOrDefault(c => c.TelegramID == idclient);
            Console.WriteLine(sendclient.TelegramID);
            sendclient.Balance += buyProduct.Count;

            long buy = (long)sendclient.TelegramID;
            await client.SendTextMessageAsync(buy, "Ви успішно продали Зерно!");
            db.Users.Update(sendclient);
            db.SaveChanges();
        }
    }
}

В коді реалізується покупка та надсилається повідомлення покупцеві тут працює все добре

 await client.SendTextMessageAsync(chat, "Ви успішно купили Зерно!");

але коли я хочу надіслати продавцеві що його продукт продано видає помилку Telegram.Bot.Exceptions.ApiRequestException: 'Bad Request: chat not found'

 await client.SendTextMessageAsync(buy, "Ви успішно продали Зерно!");

Буду вдячний за будь які відповіді.

2

Re: Відправлення повідомлення користувачу в Телеграм бот

Виглядає наче ти хочеш відправити повідомленя користувачу, який цього не просив. Так не буде.
В межах переписки bot може дати відповідь тільки тому користувачу, який відправив запит. Деталі в доках:

core.telegram.org (en)

Bots can't start conversations with users. A user must ... send them a message first.

(джерело)

Подякували: kinachuk19901

3

Re: Відправлення повідомлення користувачу в Телеграм бот

Якщо це так, що бот не може відправити повідомлення поки користувач не надішле йому, тоді як боти надсилають кожного дня всім користувачам сповіщення? Особисто мені приходять сповіщення в бот в якому я є кожного дня в певний час і якось він може відправити всім користувачам сповіщення?

4

Re: Відправлення повідомлення користувачу в Телеграм бот

kinachuk1990 написав:

як боти надсилають кожного дня всім користувачам сповіщення?

Ніяк. Сповіщеня відправлює сам tg.

kinachuk1990 написав:

Особисто мені приходять сповіщення в бот ..

Якщо ти підписав бота на якогось користувача, то tg повідомляє про активність того користувача.

kinachuk1990 написав:

і якось він може відправити всім користувачам сповіщення?

ні, бо це був би глобальний спам.