Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.15 KB | None | 0 0
  1.         public Bot(TinyMessengerHub messenger)
  2.         {
  3.             Messenger = messenger;
  4.  
  5.             modules = new List<IKcBotModule>
  6.             {
  7.                 new KcMaintModule(messenger),
  8.                 new InfectionModule(messenger)
  9.             };
  10.  
  11.             Discord = new DiscordClient(new DiscordConfiguration
  12.             {
  13.                 Token = BotToken,
  14.                 TokenType = TokenType.Bot,
  15.                 AutoReconnect = true,
  16.                 UseInternalLogHandler = true,
  17. #if DEBUG
  18.                 LogLevel = LogLevel.Debug
  19. #else
  20.                 LogLevel = LogLevel.Warning
  21. #endif
  22.             });
  23.             Discord.Ready += async e => await Discord.UpdateStatusAsync(new DiscordActivity(DiscordStatus, ActivityType.Playing));
  24.  
  25.             commands = Discord.UseCommandsNext(new CommandsNextConfiguration
  26.             {
  27.                 StringPrefixes = StringPrefixes,
  28.                 CaseSensitive = false,
  29.             });
  30.             commands.RegisterCommands<Commands>();
  31.            
  32.  
  33.             interactivity = Discord.UseInteractivity(new InteractivityConfiguration
  34.             {
  35.                 PaginationBehaviour = PaginationBehaviour.Ignore,
  36.                 Timeout = TimeSpan.FromMinutes(2)
  37.             });
  38.  
  39.  
  40.             // Record errors/disconnects in log file
  41.             Discord.ClientErrored += LogClientErrored;
  42.             Discord.SocketClosed += LogSocketClosed;
  43.             // Track last heartbeat to reconnect if we stop receiving ACKs
  44.             Discord.Heartbeated += RecordHeartbeat;
  45.             // Pass message data to modules for processing
  46.             Discord.MessageCreated += HandleMessageCreated;
  47.  
  48.             // Provide on-demand information about the current bot/module status
  49.             messenger.Subscribe<ReportStatusMessage>(ReportStatus);
  50.            
  51.             messenger.Subscribe<SendToChannelMessage>(async m => await HandleSendToChannelAsync(m));
  52.  
  53.             // Begin heartbeat monitoring
  54.             LastHeartbeat = DateTime.Now;
  55.             Task.Run(HeartbeatCheck);
  56.         }
  57.  
  58.         private async Task LogSocketClosed(SocketCloseEventArgs e)
  59.         {
  60.             Util.Log("Socket Closed.");
  61.             DiscordErrorLog errorLog;
  62.             try
  63.             {
  64.                 errorLog = await DiscordErrorLog.LoadAsync();
  65.             }
  66.             catch (Exception ex)
  67.             {
  68.                 Util.Log("Error loading error log", ex);
  69.                 return;
  70.             }
  71.  
  72.             if (errorLog.Errors == null)
  73.                 errorLog.Errors = new List<DiscordError>();
  74.  
  75.             errorLog.Errors.Add(new DiscordError
  76.             {
  77.                 Date = DateTime.Now,
  78.                 EventName = "Socket Closed",
  79.                 ExceptionMessage = $"{e.CloseMessage} ({e.CloseCode})"
  80.             });
  81.  
  82.             try
  83.             {
  84.                 await errorLog.SaveAsync();
  85.             }
  86.             catch (Exception ex)
  87.             {
  88.                 Util.Log("Couldn't save error log.", ex, AnsiColor.Red);
  89.             }
  90.  
  91.             Util.Log($"Discord client socket closed!\n{e.CloseMessage} ({e.CloseCode})", AnsiColor.Red);
  92.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement