Skip to content

Commit

Permalink
Подключил локального бота
Browse files Browse the repository at this point in the history
  • Loading branch information
hoplik committed Jun 18, 2024
1 parent ea0d4e5 commit f6be8c7
Show file tree
Hide file tree
Showing 18 changed files with 6,009 additions and 5,890 deletions.
15 changes: 15 additions & 0 deletions App.config
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,21 @@
<setting name="db_font" serializeAs="String">
<value>8</value>
</setting>
<setting name="userID" serializeAs="String">
<value>0</value>
</setting>
<setting name="userN" serializeAs="String">
<value />
</setting>
<setting name="userFN" serializeAs="String">
<value />
</setting>
<setting name="userSN" serializeAs="String">
<value />
</setting>
<setting name="auth_code" serializeAs="String">
<value>Случайный код авторизации</value>
</setting>
</FirehoseFinder.Properties.Settings>
</userSettings>
</configuration>
123 changes: 123 additions & 0 deletions Bot_Funcs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telegram.Bot.Polling;
using Telegram.Bot;
using FirehoseFinder.Properties;
using System.Threading;
using Telegram.Bot.Types.Enums;
using System.Windows.Forms;
using Telegram.Bot.Exceptions;
using Telegram.Bot.Types;

namespace FirehoseFinder
{
class Bot_Funcs
{
internal readonly long channel = -1001227261414;
internal static ITelegramBotClient _botClient;
// Это объект с настройками работы бота. Здесь мы будем указывать, какие типы Update мы будем получать, Timeout бота и так далее.
private static ReceiverOptions _receiverOptions;
internal static async Task BotWork()
{
_botClient = new TelegramBotClient(Resources.bot);
_receiverOptions = new ReceiverOptions
{
AllowedUpdates = new[] // Тут указываем типы получаемых Update`ов, о них подробнее расказано тут https://core.telegram.org/bots/api#update
{
UpdateType.Message, // Сообщения (текст, фото/видео, голосовые/видео сообщения и т.д.)
UpdateType.CallbackQuery, //Inline кнопки
},
// Параметр, отвечающий за обработку сообщений, пришедших за то время, когда ваш бот был оффлайн
// True - не обрабатывать, False (стоит по умолчанию) - обрабаывать
ThrowPendingUpdates = true,
};
var cts = new CancellationTokenSource();
// UpdateHander - обработчик приходящих Update`ов
// ErrorHandler - обработчик ошибок, связанных с Bot API
_botClient.StartReceiving(UpdateHandler, ErrorHandler, _receiverOptions, cts.Token); // Запускаем бота

var me = await _botClient.GetMeAsync(); // Создаем переменную, в которую помещаем информацию о нашем боте.
MessageBox.Show($"{me.FirstName} подключён! Доступно управление авторизацией!");
await Task.Delay(-1);
}
private static async Task UpdateHandler(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
// Обязательно ставим блок try-catch, чтобы наш бот не "падал" в случае каких-либо ошибок
try
{
// Сразу же ставим конструкцию switch, чтобы обрабатывать приходящие Update
switch (update.Type)
{
case UpdateType.Message:
{
// эта переменная будет содержать в себе все связанное с сообщениями
var message = update.Message;

// From - это от кого пришло сообщение (или любой другой Update)
var user = message.From;

// Chat - содержит всю информацию о чате
var chat = message.Chat;
if (message.Text.StartsWith("/start") && message.Text.Length > 7)
{
if (Settings.Default.userID != 0)
{
await botClient.SendTextMessageAsync(
chat.Id,
"Не надо больше. Вы уже авторизованы",
replyToMessageId: message.MessageId //"ответ" на сообщение
);
}
else
{
string authcode = message.Text.Remove(0, 7);
bool authok = authcode.Equals(Settings.Default.auth_code);
if (authok)
{
Settings.Default.userID = user.Id;
if (string.IsNullOrEmpty(user.FirstName)) Settings.Default.userFN = string.Empty; else Settings.Default.userFN = user.FirstName;
if (string.IsNullOrEmpty(user.LastName)) Settings.Default.userSN = string.Empty; else Settings.Default.userSN = user.LastName;
if (string.IsNullOrEmpty(user.Username)) Settings.Default.userN = string.Empty; else Settings.Default.userN = user.Username;
//Авторизация прошла удачно. Перегружаемся.
Application.Restart();
}
else
{
await botClient.SendTextMessageAsync(
chat.Id,
"Авторизация прошла неудачно. Попробуйте ещё раз, используя приложение FhF.",
replyToMessageId: message.MessageId //"ответ" на сообщение
);
}
}
}
else
{
await botClient.SendTextMessageAsync(
chat.Id,
message.Text, // отправляем то, что написал пользователь
replyToMessageId: message.MessageId);
}
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

private static Task ErrorHandler(ITelegramBotClient botClient, Exception error, CancellationToken cancellationToken)
{
// Тут создадим переменную, в которую поместим код ошибки и её сообщение
ApiRequestException apiRequestException = new ApiRequestException("Telegram API Error:", error);
string ErrorMessage = $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}";
MessageBox.Show(ErrorMessage);
return Task.CompletedTask;
}
}
}
6 changes: 4 additions & 2 deletions FirehoseFinder.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
<WebPage>publish.htm</WebPage>
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
<AutorunEnabled>true</AutorunEnabled>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>24.5.22.2</ApplicationVersion>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>24.6.19.0</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted>
Expand Down Expand Up @@ -136,6 +136,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Bot_Funcs.cs" />
<Compile Include="Forms\AboutBox1.cs">
<SubType>Form</SubType>
</Compile>
Expand Down Expand Up @@ -230,6 +231,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\about.png" />
<None Include="Resources\auth.png" />
<Content Include="Resources\autolen.png" />
<Content Include="Resources\bot.txt" />
<Content Include="Resources\china_flags_flag_16985.png" />
Expand Down
Loading

0 comments on commit f6be8c7

Please sign in to comment.