mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
fix: remove another bunch of obsolete method calls
This commit is contained in:
@@ -39,7 +39,7 @@ public class DeleteService : AbstractTimedHostedService
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _bot.BotClient.DeleteMessageAsync(request.ChatId, request.MessageId);
|
await _bot.BotClient.DeleteMessage(request.ChatId, request.MessageId);
|
||||||
}
|
}
|
||||||
catch (ApiRequestException e)
|
catch (ApiRequestException e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public static class BotExtension
|
|||||||
|
|
||||||
if (victim != null && canUse)
|
if (victim != null && canUse)
|
||||||
{
|
{
|
||||||
var victimMember = await bot.GetChatMemberAsync(chat, victim.Id);
|
var victimMember = await bot.GetChatMember(chat, victim.Id);
|
||||||
canUse = victimMember is not ChatMemberOwner && victimMember is not ChatMemberAdministrator && !victim.IsBot;
|
canUse = victimMember is not ChatMemberOwner && victimMember is not ChatMemberAdministrator && !victim.IsBot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ public static class BotExtension
|
|||||||
|
|
||||||
public static async Task<bool> IsUserAdminAsync(this ITelegramBotClient bot, Chat chat, User user)
|
public static async Task<bool> IsUserAdminAsync(this ITelegramBotClient bot, Chat chat, User user)
|
||||||
{
|
{
|
||||||
var callerMember = await bot.GetChatMemberAsync(chat, user.Id);
|
var callerMember = await bot.GetChatMember(chat, user.Id);
|
||||||
var isAdmin = callerMember is ChatMemberOwner;
|
var isAdmin = callerMember is ChatMemberOwner;
|
||||||
|
|
||||||
if (callerMember is ChatMemberAdministrator callerAdmin)
|
if (callerMember is ChatMemberAdministrator callerAdmin)
|
||||||
@@ -34,12 +34,12 @@ public static class BotExtension
|
|||||||
|
|
||||||
public static async Task<bool> CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat)
|
public static async Task<bool> CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat)
|
||||||
{
|
{
|
||||||
return await CanDeleteMessagesAsync(bot, chat, await bot.GetMeAsync());
|
return await CanDeleteMessagesAsync(bot, chat, await bot.GetMe());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<bool> CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat, User user)
|
public static async Task<bool> CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat, User user)
|
||||||
{
|
{
|
||||||
return await bot.GetChatMemberAsync(chat.Id, user.Id) is ChatMemberOwner
|
return await bot.GetChatMember(chat.Id, user.Id) is ChatMemberOwner
|
||||||
or ChatMemberAdministrator {CanRestrictMembers: true};
|
or ChatMemberAdministrator {CanRestrictMembers: true};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,6 @@ public abstract class CommonHandler : BotEventHandler
|
|||||||
|
|
||||||
protected async Task AnswerQuery(string id, string? message = null)
|
protected async Task AnswerQuery(string id, string? message = null)
|
||||||
{
|
{
|
||||||
await Bot.AnswerCallbackQueryAsync(id, message);
|
await Bot.AnswerCallbackQuery(id, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ public class SettingsHandler : CommonHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(
|
await Bot.SendMessage(
|
||||||
Chat.Id,
|
Chat.Id,
|
||||||
"What do you want to change?",
|
"What do you want to change?",
|
||||||
replyMarkup: GetSettingsMarkup()
|
replyMarkup: GetSettingsMarkup()
|
||||||
@@ -66,7 +66,7 @@ public class SettingsHandler : CommonHandler
|
|||||||
if (paramList[2] == "main_menu")
|
if (paramList[2] == "main_menu")
|
||||||
{
|
{
|
||||||
await AnswerQuery(query.Id);
|
await AnswerQuery(query.Id);
|
||||||
await Bot.EditMessageTextAsync(Chat.Id, query.Message!.MessageId, "What do you want to change?",
|
await Bot.EditMessageText(Chat.Id, query.Message!.MessageId, "What do you want to change?",
|
||||||
replyMarkup: GetSettingsMarkup());
|
replyMarkup: GetSettingsMarkup());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -103,14 +103,14 @@ public class SettingsHandler : CommonHandler
|
|||||||
await onOffOpt.SetValueAsync(chatId, !await onOffOpt.GetValueAsync(chatId));
|
await onOffOpt.SetValueAsync(chatId, !await onOffOpt.GetValueAsync(chatId));
|
||||||
await AnswerQuery(query.Id);
|
await AnswerQuery(query.Id);
|
||||||
|
|
||||||
await Bot.EditMessageReplyMarkupAsync(chatId, messageId, GetSettingsMarkup());
|
await Bot.EditMessageReplyMarkup(chatId, messageId, GetSettingsMarkup());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OptionType.Select:
|
case OptionType.Select:
|
||||||
var selectOpt = (IOption<string>) option;
|
var selectOpt = (IOption<string>) option;
|
||||||
await AnswerQuery(query.Id);
|
await AnswerQuery(query.Id);
|
||||||
|
|
||||||
await Bot.EditMessageTextAsync(Chat.Id, messageId, "Here's what you can choose:",
|
await Bot.EditMessageText(Chat.Id, messageId, "Here's what you can choose:",
|
||||||
replyMarkup: await GetChoiceSelectKeyboard(selectOpt));
|
replyMarkup: await GetChoiceSelectKeyboard(selectOpt));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ public class SettingsHandler : CommonHandler
|
|||||||
await selectOption.SetValueAsync(Chat.Id, choice.Id);
|
await selectOption.SetValueAsync(Chat.Id, choice.Id);
|
||||||
await AnswerQuery(query.Id);
|
await AnswerQuery(query.Id);
|
||||||
|
|
||||||
await Bot.EditMessageReplyMarkupAsync(Chat.Id, query.Message!.MessageId, await GetChoiceSelectKeyboard(selectOption));
|
await Bot.EditMessageReplyMarkup(Chat.Id, query.Message!.MessageId, await GetChoiceSelectKeyboard(selectOption));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<InlineKeyboardButton> GetKeyboardButton(IOption option)
|
private async Task<InlineKeyboardButton> GetKeyboardButton(IOption option)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class UserService
|
|||||||
|
|
||||||
private async Task<User> GetUserByChat(long chatId, long userId)
|
private async Task<User> GetUserByChat(long chatId, long userId)
|
||||||
{
|
{
|
||||||
return (await _bot.GetChatMemberAsync(chatId, userId)).User;
|
return (await _bot.GetChatMember(chatId, userId)).User;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsUserSuper(User user)
|
public bool IsUserSuper(User user)
|
||||||
|
|||||||
@@ -29,12 +29,12 @@ namespace Kruzya.TelegramBot.Core
|
|||||||
|
|
||||||
public async Task StartAsync(CancellationToken token)
|
public async Task StartAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
await _client.SetWebhookAsync(_config.Webhook.Url, secretToken: _secretToken, cancellationToken: token);
|
await _client.SetWebhook(_config.Webhook.Url, secretToken: _secretToken, cancellationToken: token);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task StopAsync(CancellationToken token)
|
public async Task StopAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
await _client.DeleteWebhookAsync(cancellationToken: token);
|
await _client.DeleteWebhook(cancellationToken: token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ public class Ban : CommonHandler
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
await Bot.SendTextMessageAsync(Chat.Id, "Нет прав на блокировку пользователя.");
|
await Bot.SendMessage(Chat.Id, "Нет прав на блокировку пользователя.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(
|
await Bot.SendMessage(
|
||||||
Chat.Id,
|
Chat.Id,
|
||||||
$"{From.ToHtml()} <code>заблокировал</code> {RepliedUser!.ToHtml()} <code>{banEndMsg}</code>",
|
$"{From.ToHtml()} <code>заблокировал</code> {RepliedUser!.ToHtml()} <code>{banEndMsg}</code>",
|
||||||
disableNotification: true, parseMode: ParseMode.Html);
|
disableNotification: true, parseMode: ParseMode.Html);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public partial class BanStickerSet
|
|||||||
var replyToMsgId = Message?.ReplyToMessage?.MessageId;
|
var replyToMsgId = Message?.ReplyToMessage?.MessageId;
|
||||||
if (replyToMsgId != null)
|
if (replyToMsgId != null)
|
||||||
{
|
{
|
||||||
await Bot.DeleteMessageAsync(Chat.Id, (int) replyToMsgId);
|
await Bot.DeleteMessage(Chat.Id, (int) replyToMsgId);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Reply(FormatStickerSetAction(stickerSet.Set, "заблокирован"));
|
await Reply(FormatStickerSetAction(stickerSet.Set, "заблокирован"));
|
||||||
@@ -90,7 +90,7 @@ public partial class BanStickerSet
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var stickerSet = await Bot.GetStickerSetAsync(list[i]);
|
var stickerSet = await Bot.GetStickerSet(list[i]);
|
||||||
htmlString.Text($"{i + 1}. ")
|
htmlString.Text($"{i + 1}. ")
|
||||||
.Url("https://t.me/addstickers/" + stickerSet.Name, stickerSet.Title)
|
.Url("https://t.me/addstickers/" + stickerSet.Name, stickerSet.Title)
|
||||||
.Br();
|
.Br();
|
||||||
@@ -125,7 +125,7 @@ public partial class BanStickerSet
|
|||||||
"Этот набор стикеров заблокирован. Чтобы я мог его удалить, выдайте мне право на удаление сообщений.");
|
"Этот набор стикеров заблокирован. Чтобы я мог его удалить, выдайте мне право на удаление сообщений.");
|
||||||
}
|
}
|
||||||
|
|
||||||
await Bot.DeleteMessageAsync(Chat.Id, message.MessageId);
|
await Bot.DeleteMessage(Chat.Id, message.MessageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,9 +14,9 @@ public partial class BanStickerSet
|
|||||||
{
|
{
|
||||||
private async Task<bool> CanBotDeleteMessages()
|
private async Task<bool> CanBotDeleteMessages()
|
||||||
{
|
{
|
||||||
return await Bot.GetChatMemberAsync(
|
return await Bot.GetChatMember(
|
||||||
Chat.Id,
|
Chat.Id,
|
||||||
(await Bot.GetMeAsync()).Id
|
(await Bot.GetMe()).Id
|
||||||
) is ChatMemberAdministrator {CanDeleteMessages: true};
|
) is ChatMemberAdministrator {CanDeleteMessages: true};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ public partial class BanStickerSet
|
|||||||
|
|
||||||
private async Task<bool> CanUseCommands()
|
private async Task<bool> CanUseCommands()
|
||||||
{
|
{
|
||||||
return await Bot.GetChatMemberAsync(Chat.Id, From.Id) is ChatMemberAdministrator {CanDeleteMessages: true}
|
return await Bot.GetChatMember(Chat.Id, From.Id) is ChatMemberAdministrator {CanDeleteMessages: true}
|
||||||
or ChatMemberOwner;
|
or ChatMemberOwner;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ class Rules : CommonHandler
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await Bot.CopyMessageAsync(Chat.Id, Chat.Id, await _rulesService.GetRulesMessageIdAsync(Chat) ?? 0);
|
await Bot.CopyMessage(Chat.Id, Chat.Id, await _rulesService.GetRulesMessageIdAsync(Chat) ?? 0);
|
||||||
}
|
}
|
||||||
catch (ApiRequestException)
|
catch (ApiRequestException)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class WhoIs : CommonHandler
|
|||||||
return customStatus;
|
return customStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
var chatMember = await Bot.GetChatMemberAsync(Chat.Id, user.Id);
|
var chatMember = await Bot.GetChatMember(Chat.Id, user.Id);
|
||||||
return chatMember.Status switch
|
return chatMember.Status switch
|
||||||
{
|
{
|
||||||
ChatMemberStatus.Creator => "Владелец",
|
ChatMemberStatus.Creator => "Владелец",
|
||||||
|
|||||||
@@ -9,14 +9,14 @@ public class Notifier
|
|||||||
{
|
{
|
||||||
public static async void WarnNotify(ITelegramBotClient bot, Chat chat, User from, User to, int count, bool isBanned = false)
|
public static async void WarnNotify(ITelegramBotClient bot, Chat chat, User from, User to, int count, bool isBanned = false)
|
||||||
{
|
{
|
||||||
await bot.SendTextMessageAsync(chat.Id, $"{to.ToHtml()}<code>, Вам выдано предупреждение! " +
|
await bot.SendMessage(chat.Id, $"{to.ToHtml()}<code>, Вам выдано предупреждение! " +
|
||||||
$"Текущее кол-во: {count}/3</code>",
|
$"Текущее кол-во: {count}/3</code>",
|
||||||
disableNotification: true,
|
disableNotification: true,
|
||||||
parseMode: ParseMode.Html);
|
parseMode: ParseMode.Html);
|
||||||
|
|
||||||
if (isBanned)
|
if (isBanned)
|
||||||
{
|
{
|
||||||
await bot.SendTextMessageAsync(
|
await bot.SendMessage(
|
||||||
chat.Id,
|
chat.Id,
|
||||||
$"{from.ToHtml()} <code>заблокировал</code> {to.ToHtml()} <code>на 7 дней</code>",
|
$"{from.ToHtml()} <code>заблокировал</code> {to.ToHtml()} <code>на 7 дней</code>",
|
||||||
disableNotification: true, parseMode: ParseMode.Html);
|
disableNotification: true, parseMode: ParseMode.Html);
|
||||||
@@ -25,7 +25,7 @@ public class Notifier
|
|||||||
|
|
||||||
public static async void UnWarnNotify(ITelegramBotClient bot, Chat chat, User from, User to, int count)
|
public static async void UnWarnNotify(ITelegramBotClient bot, Chat chat, User from, User to, int count)
|
||||||
{
|
{
|
||||||
await bot.SendTextMessageAsync(chat.Id,
|
await bot.SendMessage(chat.Id,
|
||||||
$"{to.ToHtml()}<code>, с Вас снято предупреждение! " +
|
$"{to.ToHtml()}<code>, с Вас снято предупреждение! " +
|
||||||
$"Текущее кол-во: {count}/3</code>",
|
$"Текущее кол-во: {count}/3</code>",
|
||||||
disableNotification: true,
|
disableNotification: true,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class StickerSet
|
|||||||
var sticker = message?.ReplyToMessage?.Sticker;
|
var sticker = message?.ReplyToMessage?.Sticker;
|
||||||
if (sticker is { SetName: { } })
|
if (sticker is { SetName: { } })
|
||||||
{
|
{
|
||||||
result.Set = bot.GetStickerSetAsync(sticker.SetName).GetAwaiter().GetResult();
|
result.Set = bot.GetStickerSet(sticker.SetName).GetAwaiter().GetResult();
|
||||||
result.IsValid = true;
|
result.IsValid = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ public class StickerSet
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
result.Set = bot.GetStickerSetAsync(setName.First())
|
result.Set = bot.GetStickerSet(setName.First())
|
||||||
.GetAwaiter()
|
.GetAwaiter()
|
||||||
.GetResult();
|
.GetResult();
|
||||||
result.IsValid = true;
|
result.IsValid = true;
|
||||||
|
|||||||
@@ -103,9 +103,9 @@ public class Handler : BotEventHandler
|
|||||||
public async Task UploadDetectedCode(Message message)
|
public async Task UploadDetectedCode(Message message)
|
||||||
{
|
{
|
||||||
var resp = await _haste.PostDocumentAsync(message.Text!);
|
var resp = await _haste.PostDocumentAsync(message.Text!);
|
||||||
await Bot.DeleteMessageAsync(Chat.Id, message.MessageId);
|
await Bot.DeleteMessage(Chat.Id, message.MessageId);
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(Chat.Id,
|
await Bot.SendMessage(Chat.Id,
|
||||||
$"{message.From?.ToHtml()}, you posted something long and pre-escaped, so I decided to upload it to our paste service for you.\n" +
|
$"{message.From?.ToHtml()}, you posted something long and pre-escaped, so I decided to upload it to our paste service for you.\n" +
|
||||||
$"Here is the link: {_haste.GetHasteUri() + resp.Key}",
|
$"Here is the link: {_haste.GetHasteUri() + resp.Key}",
|
||||||
parseMode: ParseMode.Html);
|
parseMode: ParseMode.Html);
|
||||||
@@ -113,8 +113,8 @@ public class Handler : BotEventHandler
|
|||||||
|
|
||||||
public async Task RemoveDetectedCode(Message message)
|
public async Task RemoveDetectedCode(Message message)
|
||||||
{
|
{
|
||||||
await Bot.DeleteMessageAsync(Chat.Id, message.MessageId);
|
await Bot.DeleteMessage(Chat.Id, message.MessageId);
|
||||||
var notifyMsg = await Bot.SendTextMessageAsync(Chat.Id,
|
var notifyMsg = await Bot.SendMessage(Chat.Id,
|
||||||
(message.From?.ToHtml() ?? "") + ", не стоит публиковать столь большой код прямо в чат. " +
|
(message.From?.ToHtml() ?? "") + ", не стоит публиковать столь большой код прямо в чат. " +
|
||||||
"Вместо этого загрузите его на https://pastebin.com и отправьте в виде ссылки.",
|
"Вместо этого загрузите его на https://pastebin.com и отправьте в виде ссылки.",
|
||||||
parseMode: ParseMode.Html);
|
parseMode: ParseMode.Html);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class UserJoinHandler : BotEventHandler
|
|||||||
[Message(MessageFlag.HasNewChatMembers)]
|
[Message(MessageFlag.HasNewChatMembers)]
|
||||||
public async Task OnUserJoined()
|
public async Task OnUserJoined()
|
||||||
{
|
{
|
||||||
var canKickMembers = await Bot.IsUserAdminAsync(Chat, await Bot.GetMeAsync());
|
var canKickMembers = await Bot.IsUserAdminAsync(Chat, await Bot.GetMe());
|
||||||
|
|
||||||
foreach (var member in RawUpdate.Message!.NewChatMembers!)
|
foreach (var member in RawUpdate.Message!.NewChatMembers!)
|
||||||
{
|
{
|
||||||
@@ -38,11 +38,11 @@ public class UserJoinHandler : BotEventHandler
|
|||||||
messageText.Append(
|
messageText.Append(
|
||||||
$"More details you can find on <a href=\"https://cas.chat/query?u={member.Id}\">CAS site</a>.");
|
$"More details you can find on <a href=\"https://cas.chat/query?u={member.Id}\">CAS site</a>.");
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(Chat, messageText.ToString(), parseMode: ParseMode.Html);
|
await Bot.SendMessage(Chat, messageText.ToString(), parseMode: ParseMode.Html);
|
||||||
|
|
||||||
if (canKickMembers)
|
if (canKickMembers)
|
||||||
{
|
{
|
||||||
await Bot.BanChatMemberAsync(Chat, member.Id);
|
await Bot.BanChatMember(Chat, member.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,14 +38,14 @@ public class Store : CommonHandler
|
|||||||
|
|
||||||
if (_reputation == null)
|
if (_reputation == null)
|
||||||
{
|
{
|
||||||
await Bot.SendTextMessageAsync(Chat.Id, "Reputation is unavailable.");
|
await Bot.SendMessage(Chat.Id, "Reputation is unavailable.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var user = From;
|
var user = From;
|
||||||
var reputation = await _reputation.GetUserReputationAsync(Chat, user);
|
var reputation = await _reputation.GetUserReputationAsync(Chat, user);
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(Chat.Id, $"<b>{user.ToHtml()} ({reputation})</b>, чего пожелаете?", parseMode: ParseMode.Html,
|
await Bot.SendMessage(Chat.Id, $"<b>{user.ToHtml()} ({reputation})</b>, чего пожелаете?", parseMode: ParseMode.Html,
|
||||||
replyMarkup: new InlineKeyboardMarkup(
|
replyMarkup: new InlineKeyboardMarkup(
|
||||||
_provider.GetServices<IRandomMediaService>()
|
_provider.GetServices<IRandomMediaService>()
|
||||||
.ToAsyncEnumerable()
|
.ToAsyncEnumerable()
|
||||||
@@ -99,7 +99,7 @@ public class Store : CommonHandler
|
|||||||
var reputation = await _reputation.GetUserReputationAsync(Chat, From);
|
var reputation = await _reputation.GetUserReputationAsync(Chat, From);
|
||||||
if (reputation < storeItem.Price)
|
if (reputation < storeItem.Price)
|
||||||
{
|
{
|
||||||
await Bot.EditMessageTextAsync(
|
await Bot.EditMessageText(
|
||||||
Chat.Id,
|
Chat.Id,
|
||||||
messageId,
|
messageId,
|
||||||
$"<b>{From.ToHtml()} ({reputation})</b>, продолжай работать и тебе обязательно хватит на покупку.",
|
$"<b>{From.ToHtml()} ({reputation})</b>, продолжай работать и тебе обязательно хватит на покупку.",
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public class Reputation : CommonHandler
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Bot.SendTextMessageAsync(Chat!, msg.ToString(), parseMode: ParseMode.Html,
|
await Bot.SendMessage(Chat!, msg.ToString(), parseMode: ParseMode.Html,
|
||||||
disableNotification: true);
|
disableNotification: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user