Вы должны войти, чтобы создавать сообщения и темы.

Разработка бота тг на с#

Всем привет. Решил попробовать себя в разработке ботов и столкнулся с такой проблемой: не могу отправить сообщение ботом по айди в тг.
await botClient.SendTextMessageAsync(moderator, "Привет");
В переменную moderator записан айди, напрямую написать вместо переменной айди не помогает. Пользователь, которому принадлежит айди, уже имеет диалог с ботом.

Лайкнул shiky
shiky

Приветствую.
Так что именно не получается? Ошибка какая-то или что?

Лайкнули XpucT и shiky
XpucTshiky

Константин, привет 🖐
Не уверен, что правильно понял, но на всякий случай скажу, чтобы Ты отказался от создания переменных, когда работаешь с ботом.
Нужно понимать, что бот постоянно прослушивает сервер и взаимодействует с другими людьми.

Идеальным конкретно в данном случае будет не обращаться к переменным и упаси к полям.
В идеале обращаться строго update.message.ChatId...

Лайкнул Сергей
Сергей
В любой непонятной ситуации переходи на beta  © Win 10 Tweaker
Цитата: Adler от 06.11.2022, 09:14

Приветствую.
Так что именно не получается? Ошибка какая-то или что?

Выполнение кода просто зависает на строке кода отправления сообщения
Мне нужно, чтобы бот отправил мне сообщение пользователя, почему-то не хочет отправлять по айди в тг, не могу понять почему

Попробуйте сначала просто, через http запрос отправить себе сообщение или через PowerShell

PowerShell

$token = ""    
$chat_id = ""
$text = ""
#-----------------------------------------------------------------------------------------------------------------------------------------------------------
$URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + "`n"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -URI ($URI) –UseBasicParsing


Есть подозрение, что id чата не правильный.
А вообще я делал так:
Часть кода с отправкой сообщения

private async static Task OnUpdate(ITelegramBotClient botClient, Update update, CancellationToken ct)
        {
            string chatId;
            string userId;
            try // Если пользователь отвечает кнопками под сообщением то метод получения чата другой(Можно от этого избавиться переписав соответствующие методы и так будет правильнее)
            {
                 chatId = update.Message.Chat.Id.ToString();
                 userId = update.Message.From.Id.ToString();
            }
            catch
            {
                 chatId = update.CallbackQuery.Message.Chat.Id.ToString();
                 userId = update.CallbackQuery.Message.From.Id.ToString();
            }

            if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message)//Если прислали сообщение
            {
                var message = update.Message;

                if (message.Type == Telegram.Bot.Types.Enums.MessageType.Text)//Если сообщение является текстом
                {
                    if (update.Message.Text == "/start")//Простая проверка на комманды 
                    {
                       await botClient.SendTextMessageAsync(chatId, $"Рад приветствовать вас {update.Message.From.Username}.\n" +
                                $"Я принимаю фото ШК и ищу информацию по товару.\n" +
                                $"P.S: Старйтесь фотограффировать ШК либо вертикально либо горизонтально. Так мне распознать его будет легче.");

                        Console.WriteLine($"{DateTime.Today} ---Получена комманда '{update.Message.Text}' в чате с ID: {chatId} от {update.Message.From.Username}.");

                    }

                 }   

            }