Files
PL_JusticeBot/Justice.cs
Дмитрий Шиманский e6d58309d3 hotfix: error "Webhook not found"
2023-11-04 22:00:36 +03:00

71 lines
2.7 KiB
C#

using Discord;
using Discord.WebSocket;
using DiscordApp;
using System.Timers;
namespace DiscordApp
{
public class JusticeBotService : BackgroundService
{
private readonly IHostApplicationLifetime hostApplicationLifetime;
private readonly DiscordSocketClient client;
private readonly IConfiguration configuration;
private readonly JusticeHandler interactionHandler;
public JusticeBotService(
IHostApplicationLifetime hostApplicationLifetime,
DiscordSocketClient client,
IConfiguration configuration,
JusticeHandler interactionHandler)
{
this.interactionHandler = interactionHandler;
this.configuration = configuration;
this.client = client;
this.hostApplicationLifetime = hostApplicationLifetime;
}
protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
client.Log += LogAsync;
client.UserJoined += Justice.Events.Events.onJoinGuild;
client.MessageReceived += Justice.Events.Events.onMessageCreate;
client.Ready += onReady;
await client.LoginAsync(TokenType.Bot, "MTE2NjA3OTk3NjQ0NjEwMzYwMg.GAKOIo.4af972Wh11G0EF4O5tNYb7l-vt5OwMc4HPRnjE");
await client.StartAsync();
await interactionHandler.InitializeAsync();
await Task.Delay(Timeout.Infinite);
}
public async Task onReady()
{
await ChangeNicknames();
var myTimer = new System.Timers.Timer(6 * 60 * 60 * 1000); //calculate six hours in milliseconds
myTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
myTimer.Start();
}
private async void OnTimedEvent(object sender, ElapsedEventArgs e)
{
Console.WriteLine("Started timer");
await ChangeNicknames();
}
private async Task ChangeNicknames()
{
IGuild guild = client.GetGuild(1107742957458685985);
IRole role = guild.GetRole(1136564585420304444);
var members = await guild.GetUsersAsync();
var membersArray = members.ToArray();
foreach (IGuildUser user in membersArray)
{
var spUser = await Startup.sp.GetUser(user.Id.ToString());
if (spUser.IsPlayer())
{
await user.ModifyAsync(func => { func.Nickname = spUser.Name; });
await user.AddRoleAsync(role);
}
}
}
private async Task LogAsync(LogMessage message)
=> Console.WriteLine(message.ToString());
}
}