Skip to content
This repository has been archived by the owner on Feb 19, 2024. It is now read-only.

Commit

Permalink
1.1.2
Browse files Browse the repository at this point in the history
1. Typo
2. Динамический статус с количеством пользователей бота
3. Фикс возможности перебора групп
  • Loading branch information
likhner committed Jul 11, 2022
1 parent 9a95e28 commit dd44735
Show file tree
Hide file tree
Showing 8 changed files with 110 additions and 8 deletions.
8 changes: 8 additions & 0 deletions API/OperationStatus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public class OperationStatus
public OperationStatus()
{
AdminUnbanRequestPages = new Dictionary<long, int>();
UsersAskedForEditor = new Dictionary<long, int>();
CoolDownUsers = new HashSet<long>();
UsersToEditorGiving = new HashSet<EditorRequest>();
AdminRequests = new HashSet<AdminRequest>();
Expand All @@ -27,6 +28,7 @@ public OperationStatus()
public HashSet<long> UnbannedUsers { get; }
public HashSet<long> UsersBotIsAvailable { get; }
public Dictionary<long, int> AdminUnbanRequestPages { get; }
public Dictionary<long, int> UsersAskedForEditor { get; }

public void AddLimitlessUserCoolDown(long user)
{
Expand All @@ -46,6 +48,12 @@ public void AddAdminRequest(AdminRequest request)
AdminRequests.Add(request);
}

public void AddUserAskedForEditor(long id)
{
if (UsersAskedForEditor.ContainsKey(id)) UsersAskedForEditor[id]++;
else UsersAskedForEditor.Add(id, 1);
}

public bool IfUserIsUnbanned(long user)
{
return UnbannedUsers.Contains(user);
Expand Down
33 changes: 29 additions & 4 deletions API/VkController.cs
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
using nng.VkFrameworks;
using nng_bot.Models;
using VkNet;
using VkNet.Enums.SafetyEnums;
using VkNet.Exception;
using VkNet.Model;

namespace nng_bot.API;

public class VkController
{
public VkController(ILogger<VkController> logger,
VkFrameworkHttp vkFrameworkHttp, VkFramework vkFramework)
public VkController(ILogger<VkController> logger, VkFramework vkFramework,
VkFrameworkHttp vkFrameworkHttp, IConfiguration configuration)
{
Logger = logger;
VkFrameworkHttp = vkFrameworkHttp;
VkFramework = vkFramework;
Configuration = configuration;

GroupFramework = new VkApi();
GroupFramework.Authorize(new ApiAuthParams
{
AccessToken = configuration["Auth:DialogGroupToken"]
});
}

private VkFrameworkHttp VkFrameworkHttp { get; }
private VkFramework VkFramework { get; }
public VkFramework VkFramework { get; }
public VkApi GroupFramework { get; }
private ILogger<VkController> Logger { get; }
private IConfiguration Configuration { get; }

public void EditManager(long user, long group, ManagerRole role)
{
Expand All @@ -32,7 +43,7 @@ public void SendMessage(string? message, string? keyboard, long peer)
}
catch (VkApiException e)
{
Logger.LogWarning("{ExceptionType} {Message}", e.GetType(), e.Message);
Logger.LogWarning("{ExceptionType}: {Message}", e.GetType(), e.Message);
}
}

Expand All @@ -51,4 +62,18 @@ public CacheGroup GetGroupInfo(long group)
returnCache.ManagerTotalCount = data.ManagerCount;
return returnCache;
}

public void SetEditorStatus(long count)
{
try
{
VkFrameworkExecution.Execute(() =>
VkFramework.Api.Status.Set($"🤠 всего пользователей: {count}",
Configuration.GetValue<long>("Auth:DialogGroupId")));
}
catch (VkApiException e)
{
Logger.LogWarning("{ExceptionType}: {Message}", e.GetType(), e.Message);
}
}
}
10 changes: 9 additions & 1 deletion Controllers/EditorControllerPayloadProcessors.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,14 @@ private void ProcessGiveEditor(long user)
return;
}

Status.AddUserAskedForEditor(user);
if (Status.UsersAskedForEditor[user] > 3)
{
VkController.SendMessage(PhraseFramework.YouAreOnCoolDown,
GoToMenuButtons, user);
return;
}

Status.AddEditorRequest(new EditorRequest(user, group.Id));
VkController.SendMessage(PhraseFramework.PleaseJoinGroup(group), IveJoinedButtons, user);
}
Expand Down Expand Up @@ -295,7 +303,7 @@ private void ProcessIveJoinedLessThanFiftySubs(long user)
return;
}

VkController.SendMessage(PhraseFramework.YouHaveNotJoinedClub, GoToMenuButtons,
VkController.SendMessage(PhraseFramework.YouHaveNotJoinedClub, IveJoinedButtonsLessThanFiftySubs,
user);
}

Expand Down
13 changes: 12 additions & 1 deletion Frameworks/CacheTaskScheduler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ namespace nng_bot.Frameworks;

public class CacheScheduledTaskProcessor
{
private readonly StatusFramework _framework;

public CacheScheduledTaskProcessor(ILogger<CacheScheduledTaskProcessor> logger, VkController api,
IConfiguration configuration, CacheFramework cacheFramework,
OperationStatus operationStatus, PhraseFramework phraseFramework)
OperationStatus operationStatus, PhraseFramework phraseFramework, StatusFramework framework)
{
_framework = framework;
Logger = logger;
Api = api;
Configuration = configuration;
Expand Down Expand Up @@ -74,6 +77,7 @@ public async void UpdateCache(object? state)
OperationStatus.AdminRequests.Clear();
OperationStatus.UsersToEditorGiving.Clear();
OperationStatus.AdminUnbanRequestPages.Clear();
OperationStatus.UsersAskedForEditor.Clear();
OperationStatus.LimitlessLimit.Clear();

foreach (var group in groups)
Expand Down Expand Up @@ -101,6 +105,13 @@ public async void UpdateCache(object? state)

saveData.CreatedOn = DateTime.Now;
CacheFramework.SaveCache(saveData);

Logger.LogInformation("Обновляем диалоги для статуса…");
var count = _framework.GetConversationsCount();
Logger.LogInformation("Количество диалогов для статуса: {Count}", count);
_framework.UpdateStatus(count);
Logger.LogInformation("Статус обновлен");

Logger.LogInformation("Кэш обновлен успешно");
InProgress = false;
NextRun = DateTime.Now.AddHours(Configuration.GetValue<int>("Cache:UpdatePerHours"));
Expand Down
49 changes: 49 additions & 0 deletions Frameworks/StatusFramework.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using nng.VkFrameworks;
using nng_bot.API;
using VkNet.Exception;
using VkNet.Model.RequestParams;

namespace nng_bot.Frameworks;

public class StatusFramework
{
private readonly VkController _controller;
private readonly long _groupId;
private readonly ILogger<StatusFramework> _status;

public StatusFramework(VkController controller, IConfiguration configuration, ILogger<StatusFramework> status)
{
_controller = controller;
_status = status;
_groupId = configuration.GetValue<long>("Auth:DialogGroupId");
}

public long GetConversationsCount()
{
try
{
var group = (ulong?) _groupId;

var results = VkFrameworkExecution.ExecuteWithReturn(() =>
_controller.GroupFramework.Messages.GetConversations(new GetConversationsParams
{
Count = 0,
Extended = false,
GroupId = group,
Offset = 0
}));

return results.Count;
}
catch (VkApiException e)
{
_status.LogWarning("{Type}: {Message}", e.GetType(), e.Message);
return 0;
}
}

public void UpdateStatus(long count)
{
_controller.SetEditorStatus(count);
}
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@
"PriorityUsers": [Айди приоритетных пользователей],
"AdminUsers": [Айди администраторов],
"EditorRestriction": Максимальное количество редакторов на человека,
"GroupManagersCelling": Максимальное количество редакторов в группах
"GroupManagersCeiling": Максимальное количество редакторов в группах
}
```
1 change: 1 addition & 0 deletions Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public void ConfigureServices(IServiceCollection services)

services.AddSingleton(_ => new VkFrameworkHttp(Configuration.GetSection("Auth:DialogGroupToken").Value));
services.AddSingleton<VkController>();
services.AddSingleton<StatusFramework>();
services.AddSingleton<OperationStatus>();
services.AddSingleton<CacheFramework>();
services.AddHostedService<CacheScheduledTask>();
Expand Down
2 changes: 1 addition & 1 deletion nng-bot.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<PropertyGroup>
<PackageId>nng-bot</PackageId>
<PackageVersion>1.1.1</PackageVersion>
<PackageVersion>1.1.2</PackageVersion>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Authors>likhner;RomanKochetov</Authors>
<RepositoryUrl>https://github.com/MrAlonas/nng-bot.git</RepositoryUrl>
Expand Down

0 comments on commit dd44735

Please sign in to comment.