Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Bot(TinyMessengerHub messenger)
- {
- Messenger = messenger;
- modules = new List<IKcBotModule>
- {
- new KcMaintModule(messenger),
- new InfectionModule(messenger)
- };
- Discord = new DiscordClient(new DiscordConfiguration
- {
- Token = BotToken,
- TokenType = TokenType.Bot,
- AutoReconnect = true,
- UseInternalLogHandler = true,
- #if DEBUG
- LogLevel = LogLevel.Debug
- #else
- LogLevel = LogLevel.Warning
- #endif
- });
- Discord.Ready += async e => await Discord.UpdateStatusAsync(new DiscordActivity(DiscordStatus, ActivityType.Playing));
- commands = Discord.UseCommandsNext(new CommandsNextConfiguration
- {
- StringPrefixes = StringPrefixes,
- CaseSensitive = false,
- });
- commands.RegisterCommands<Commands>();
- interactivity = Discord.UseInteractivity(new InteractivityConfiguration
- {
- PaginationBehaviour = PaginationBehaviour.Ignore,
- Timeout = TimeSpan.FromMinutes(2)
- });
- // Record errors/disconnects in log file
- Discord.ClientErrored += LogClientErrored;
- Discord.SocketClosed += LogSocketClosed;
- // Track last heartbeat to reconnect if we stop receiving ACKs
- Discord.Heartbeated += RecordHeartbeat;
- // Pass message data to modules for processing
- Discord.MessageCreated += HandleMessageCreated;
- // Provide on-demand information about the current bot/module status
- messenger.Subscribe<ReportStatusMessage>(ReportStatus);
- messenger.Subscribe<SendToChannelMessage>(async m => await HandleSendToChannelAsync(m));
- // Begin heartbeat monitoring
- LastHeartbeat = DateTime.Now;
- Task.Run(HeartbeatCheck);
- }
- private async Task LogSocketClosed(SocketCloseEventArgs e)
- {
- Util.Log("Socket Closed.");
- DiscordErrorLog errorLog;
- try
- {
- errorLog = await DiscordErrorLog.LoadAsync();
- }
- catch (Exception ex)
- {
- Util.Log("Error loading error log", ex);
- return;
- }
- if (errorLog.Errors == null)
- errorLog.Errors = new List<DiscordError>();
- errorLog.Errors.Add(new DiscordError
- {
- Date = DateTime.Now,
- EventName = "Socket Closed",
- ExceptionMessage = $"{e.CloseMessage} ({e.CloseCode})"
- });
- try
- {
- await errorLog.SaveAsync();
- }
- catch (Exception ex)
- {
- Util.Log("Couldn't save error log.", ex, AnsiColor.Red);
- }
- Util.Log($"Discord client socket closed!\n{e.CloseMessage} ({e.CloseCode})", AnsiColor.Red);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement