Initial commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
|||||||
|
**/.classpath
|
||||||
|
**/.dockerignore
|
||||||
|
**/.env
|
||||||
|
**/.git
|
||||||
|
**/.gitignore
|
||||||
|
**/.project
|
||||||
|
**/.settings
|
||||||
|
**/.toolstarget
|
||||||
|
**/.vs
|
||||||
|
**/.vscode
|
||||||
|
**/*.*proj.user
|
||||||
|
**/*.dbmdl
|
||||||
|
**/*.jfm
|
||||||
|
**/azds.yaml
|
||||||
|
**/bin
|
||||||
|
**/charts
|
||||||
|
**/docker-compose*
|
||||||
|
**/Dockerfile*
|
||||||
|
**/node_modules
|
||||||
|
**/npm-debug.log
|
||||||
|
**/obj
|
||||||
|
**/secrets.dev.yaml
|
||||||
|
**/values.dev.yaml
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
!**/.gitignore
|
||||||
|
!.git/HEAD
|
||||||
|
!.git/config
|
||||||
|
!.git/packed-refs
|
||||||
|
!.git/refs/heads/**
|
||||||
+398
@@ -0,0 +1,398 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from httpsgithub.comgithubgitignoreblobmainVisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
.rsuser
|
||||||
|
.suo
|
||||||
|
.user
|
||||||
|
.userosscache
|
||||||
|
.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelopXamarin Studio)
|
||||||
|
.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug
|
||||||
|
[Dd]ebugPublic
|
||||||
|
[Rr]elease
|
||||||
|
[Rr]eleases
|
||||||
|
x64
|
||||||
|
x86
|
||||||
|
[Ww][Ii][Nn]32
|
||||||
|
[Aa][Rr][Mm]
|
||||||
|
[Aa][Rr][Mm]64
|
||||||
|
bld
|
||||||
|
[Bb]in
|
||||||
|
[Oo]bj
|
||||||
|
[Ll]og
|
||||||
|
[Ll]ogs
|
||||||
|
|
||||||
|
# Visual Studio 20152017 cacheoptions directory
|
||||||
|
.vs
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated Files
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult
|
||||||
|
[Bb]uild[Ll]og.
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS
|
||||||
|
[Rr]eleasePS
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
_i.c
|
||||||
|
_p.c
|
||||||
|
_h.h
|
||||||
|
.ilk
|
||||||
|
.meta
|
||||||
|
.obj
|
||||||
|
.iobj
|
||||||
|
.pch
|
||||||
|
.pdb
|
||||||
|
.ipdb
|
||||||
|
.pgc
|
||||||
|
.pgd
|
||||||
|
.rsp
|
||||||
|
.sbr
|
||||||
|
.tlb
|
||||||
|
.tli
|
||||||
|
.tlh
|
||||||
|
.tmp
|
||||||
|
.tmp_proj
|
||||||
|
_wpftmp.csproj
|
||||||
|
.log
|
||||||
|
.tlog
|
||||||
|
.vspscc
|
||||||
|
.vssscc
|
||||||
|
.builds
|
||||||
|
.pidb
|
||||||
|
.svclog
|
||||||
|
.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch
|
||||||
|
.aps
|
||||||
|
.ncb
|
||||||
|
.opendb
|
||||||
|
.opensdf
|
||||||
|
.sdf
|
||||||
|
.cachefile
|
||||||
|
.VC.db
|
||||||
|
.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
.psess
|
||||||
|
.vsp
|
||||||
|
.vspx
|
||||||
|
.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper
|
||||||
|
.[Rr]e[Ss]harper
|
||||||
|
.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover
|
||||||
|
!.axoCoversettings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage.json
|
||||||
|
coverage.xml
|
||||||
|
coverage.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
.coverage
|
||||||
|
.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_
|
||||||
|
.crunch.local.xml
|
||||||
|
nCrunchTemp_
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
.mm.
|
||||||
|
AutoTest.Net
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProjectbuildhelp
|
||||||
|
DocProjectHelp.HxT
|
||||||
|
DocProjectHelp.HxC
|
||||||
|
DocProjectHelp.hhc
|
||||||
|
DocProjectHelp.hhk
|
||||||
|
DocProjectHelp.hhp
|
||||||
|
DocProjectHelpHtml2
|
||||||
|
DocProjectHelphtml
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
.[Pp]ublish.xml
|
||||||
|
.azurePubxml
|
||||||
|
# Note Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
.pubxml
|
||||||
|
.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
[Pp]ackages
|
||||||
|
# except build, which is used as an MSBuild target.
|
||||||
|
![Pp]ackagesbuild
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#![Pp]ackagesrepositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
.nuget.props
|
||||||
|
.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx
|
||||||
|
.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf
|
||||||
|
rcf
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages
|
||||||
|
BundleArtifacts
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
.appx
|
||||||
|
.appxbundle
|
||||||
|
.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!.[Cc]ache
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin
|
||||||
|
~$
|
||||||
|
~
|
||||||
|
.dbmdl
|
||||||
|
.dbproj.schemaview
|
||||||
|
.jfm
|
||||||
|
.pfx
|
||||||
|
.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (httpsgithub.comgithubgitignorepull2483#issue-259490424)
|
||||||
|
#.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (httpsgithub.comgithubgitignorepull1529#issuecomment-104372622)
|
||||||
|
#bower_components
|
||||||
|
|
||||||
|
# RIASilverlight projects
|
||||||
|
Generated_Code
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files
|
||||||
|
Backup
|
||||||
|
UpgradeLog.XML
|
||||||
|
UpgradeLog.htm
|
||||||
|
ServiceFabricBackup
|
||||||
|
.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
.mdf
|
||||||
|
.ldf
|
||||||
|
.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
.rdl.data
|
||||||
|
.bim.layout
|
||||||
|
.bim_.settings
|
||||||
|
.rptproj.rsuser
|
||||||
|
- [Bb]ackup.rdl
|
||||||
|
- [Bb]ackup ([0-9]).rdl
|
||||||
|
- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
.vbw
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
.vbp
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
.dsw
|
||||||
|
.dsp
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
.ncb
|
||||||
|
.aps
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
.HTMLClientGeneratedArtifacts
|
||||||
|
.DesktopClientGeneratedArtifacts
|
||||||
|
.DesktopClientModelManifest.xml
|
||||||
|
.ServerGeneratedArtifacts
|
||||||
|
.ServerModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paketpaket.exe
|
||||||
|
paket-files
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.crpersonal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__
|
||||||
|
.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools
|
||||||
|
# !toolspackages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
.btp.cs
|
||||||
|
.btm.cs
|
||||||
|
.odx.cs
|
||||||
|
.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
.vshistory
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools
|
||||||
|
.vscode
|
||||||
|
!.vscodesettings.json
|
||||||
|
!.vscodetasks.json
|
||||||
|
!.vscodelaunch.json
|
||||||
|
!.vscodeextensions.json
|
||||||
|
.code-workspace
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history
|
||||||
|
|
||||||
|
# Windows Installer files from build outputs
|
||||||
|
.cab
|
||||||
|
.msi
|
||||||
|
.msix
|
||||||
|
.msm
|
||||||
|
.msp
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.sln.iml
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.10.35122.118
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SVBotApp", "SVBotApp\SVBotApp.csproj", "{A1D5F832-7965-4752-8D11-9B91D39086D5}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Элементы решения", "Элементы решения", "{9CE191A0-1911-4E36-802B-5677313377F8}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
nuget.config = nuget.config
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{A1D5F832-7965-4752-8D11-9B91D39086D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A1D5F832-7965-4752-8D11-9B91D39086D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A1D5F832-7965-4752-8D11-9B91D39086D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A1D5F832-7965-4752-8D11-9B91D39086D5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {511F0F10-D3BD-4A48-A066-965634E55F66}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace SVBotApp.Configuration;
|
||||||
|
|
||||||
|
public sealed class BotSettings
|
||||||
|
{
|
||||||
|
public const string SectionName = "Bot";
|
||||||
|
|
||||||
|
public string Secret { get; set; } = null!;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
|
||||||
|
USER app
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
WORKDIR /src
|
||||||
|
COPY ["SVBotApp/SVBotApp.csproj", "SVBotApp/"]
|
||||||
|
RUN dotnet restore "./SVBotApp/SVBotApp.csproj"
|
||||||
|
COPY . .
|
||||||
|
WORKDIR "/src/SVBotApp"
|
||||||
|
RUN dotnet build "./SVBotApp.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||||
|
|
||||||
|
FROM build AS publish
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
RUN dotnet publish "./SVBotApp.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||||
|
|
||||||
|
FROM base AS final
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=publish /app/publish .
|
||||||
|
ENTRYPOINT ["dotnet", "SVBotApp.dll"]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using SVBotApp;
|
||||||
|
using SVBotApp.Configuration;
|
||||||
|
|
||||||
|
var builder = Host.CreateApplicationBuilder(args);
|
||||||
|
|
||||||
|
builder.Services.Configure<BotSettings>(builder.Configuration.GetSection(BotSettings.SectionName));
|
||||||
|
|
||||||
|
builder.Services.AddHostedService<Worker>();
|
||||||
|
|
||||||
|
var host = builder.Build();
|
||||||
|
host.Run();
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"SVBotApp": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"environmentVariables": {
|
||||||
|
"DOTNET_ENVIRONMENT": "Development"
|
||||||
|
},
|
||||||
|
"dotnetRunMessages": true
|
||||||
|
},
|
||||||
|
"Container (Dockerfile)": {
|
||||||
|
"commandName": "Docker"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json"
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Worker">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<UserSecretsId>dotnet-SVBotApp-dbaa4807-7656-49a4-a49b-f451adab85b8</UserSecretsId>
|
||||||
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||||
|
<PackageReference Include="Telegram.Bot" Version="21.11.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ActiveDebugProfile>SVBotApp</ActiveDebugProfile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using SVBotApp.Configuration;
|
||||||
|
using Telegram.Bot;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using Telegram.Bot.Types.Enums;
|
||||||
|
using Telegram.Bot.Types.ReplyMarkups;
|
||||||
|
|
||||||
|
namespace SVBotApp;
|
||||||
|
|
||||||
|
public class Worker : BackgroundService
|
||||||
|
{
|
||||||
|
private readonly ILogger<Worker> _logger;
|
||||||
|
private readonly BotSettings _botSettings;
|
||||||
|
|
||||||
|
private TelegramBotClient? _botClient = null;
|
||||||
|
|
||||||
|
public Worker(ILogger<Worker> logger, IOptions<BotSettings> botSettings)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_botSettings = botSettings.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async Task ExecuteAsync(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_botClient ??= new TelegramBotClient(_botSettings.Secret, cancellationToken: cancellationToken);
|
||||||
|
|
||||||
|
_botClient.OnMessage += OnMessageAsync;
|
||||||
|
_botClient.OnUpdate += OnUpdateAsync;
|
||||||
|
|
||||||
|
_logger.LogInformation("INITIALIZED");
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnUpdateAsync(Update update)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("UPDATE_RECEIVED => '{update}'", update.Id);
|
||||||
|
|
||||||
|
if (update.Type == UpdateType.CallbackQuery && update.CallbackQuery != null)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("PROCESS_CALLBACK_QUERY => {id}:{data}", update.CallbackQuery.Id, update.CallbackQuery.Data);
|
||||||
|
await _botClient!.EditMessageTextAsync(
|
||||||
|
update.CallbackQuery.Message!.Chat.Id,
|
||||||
|
update.CallbackQuery.Message.MessageId,
|
||||||
|
$"Button pressed: {update.CallbackQuery.Data}",
|
||||||
|
replyMarkup: new InlineKeyboardMarkup().AddButton("Step2", "step2"));
|
||||||
|
await _botClient!.AnswerCallbackQueryAsync(update.CallbackQuery.Id, string.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnMessageAsync(Message message, UpdateType updateType)
|
||||||
|
{
|
||||||
|
if (_botClient == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInformation("MESSAGE_RECEIVED => '{message}'", message.Text);
|
||||||
|
|
||||||
|
var processingMessage = await _botClient.SendTextMessageAsync(message.Chat.Id, "Processing...", protectContent: true, replyMarkup: new ReplyKeyboardRemove());
|
||||||
|
await _botClient.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);
|
||||||
|
|
||||||
|
await Task.Delay(2000);
|
||||||
|
|
||||||
|
var replyMarkup = new ReplyKeyboardMarkup(true)
|
||||||
|
.AddButton("Btn 01")
|
||||||
|
.AddButton("Btn 02");
|
||||||
|
|
||||||
|
var inlineKeyboard = new InlineKeyboardMarkup()
|
||||||
|
.AddButton("Some", "some");
|
||||||
|
|
||||||
|
_ = await _botClient.SendTextMessageAsync(message.Chat.Id, $"""You've wrote: "{message.Text}".""",
|
||||||
|
protectContent: true,
|
||||||
|
replyParameters: message,
|
||||||
|
replyMarkup: inlineKeyboard);
|
||||||
|
await _botClient.DeleteMessageAsync(processingMessage.Chat.Id, processingMessage.MessageId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.Hosting.Lifetime": "Information"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Bot": {
|
||||||
|
"Secret": "6831614155:AAGJWCeDU0Js8Wj9cN4_R4j1MXA8LFUPL2Q"
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.Hosting.Lifetime": "Information"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
|
<add key="Telegram.Bot" value="https://pkgs.dev.azure.com/tgbots/Telegram.Bot/_packaging/release/nuget/v3/index.json" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
||||||
Reference in New Issue
Block a user