Repository navigation
Expand file tree
/
Copy pathSetup.cs
More file actions
132 lines (96 loc) · 4.5 KB
/
Copy pathSetup.cs
File metadata and controls
132 lines (96 loc) · 4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using discordamx.Discord;
using discordamx.Plugin;
using DSharpPlus;
using DSharpPlus.Entities;
using DSharpPlus.VoiceNext;
using Microsoft.Extensions.Logging;
using System;
using System.Runtime.InteropServices;
namespace discordamx
{
internal static partial class Program
{
//Coreinfo
static bool m_isWindows;
static bool m_isLinux;
static void Setup(string[] args)
{
if (m_Setup) return;
Program.m_ScriptGuilds = new List<Scripting.Guild>();
Program.m_ScriptTimers = new List<Scripting.ScriptTimer>();
m_DmUsers = new List<DiscordChannel>();
Program.m_Embeds = new List<Scripting.DiscordEmbedBuilder>();
Console.ForegroundColor = ConsoleColor.Yellow;
#if DEBUG
Program.m_Logger.Warning(" RUNNING IN DEBUG MODE with user " + Environment.UserName);
#endif
Console.ForegroundColor = ConsoleColor.White;
Program.m_Logger.Write(" -> DiscordAMX BETA © 2022-2026 - www.github.com/michael-fa <-");
//Environment - Set the OS
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) m_isWindows = true;
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) m_isLinux = true;
else StopEverything();
if (m_isWindows) Program.m_Logger.Write("INIT: -> Running on Windows.");
else if (m_isLinux) Program.m_Logger.Write("INIT: Running on Linux. (Make sure you are always up to date!");
Program.dConfig = new DiscordConfiguration()
{
TokenType = TokenType.Bot,
AlwaysCacheMembers = false,
MinimumLogLevel = LogLevel.Critical | LogLevel.Information | LogLevel.Warning | LogLevel.Error,
//MinimumLogLevel = LogLevel.Debug,
MessageCacheSize = 4065,
Intents = DiscordIntents.DirectMessageReactions
| DiscordIntents.DirectMessages
| DiscordIntents.GuildMessageReactions
| DiscordIntents.MessageContents
| DiscordIntents.GuildBans
| DiscordIntents.GuildEmojis
| DiscordIntents.GuildInvites
| DiscordIntents.GuildMembers
| DiscordIntents.GuildMessages
| DiscordIntents.Guilds
| DiscordIntents.GuildVoiceStates
| DiscordIntents.GuildWebhooks,
AutoReconnect = true
};
//check if main config exists..
if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "discordamx.properties"))
{
//Set defaults
File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "discordamx.properties", "#You need to know how to create a bot with the Discord Developer Portal website. Use the internet for tutorials. Add your own bot's token below:\ndiscord-bot-token=changeme");
}
m_Properties = new Properties(AppDomain.CurrentDomain.BaseDirectory + "discordamx.properties");
if (m_Properties != null)
{
Program.dConfig.Token = m_Properties.get("discord-bot-token");
//Start the discord bot
Bot.RunAsync(dConfig).GetAwaiter().GetResult();
Console.ForegroundColor = ConsoleColor.Yellow;
Program.m_Logger.Debug("Waiting for first guild data download to finish..");
var guildInitializationDeadline = DateTime.UtcNow.AddSeconds(30);
while (!Program.m_ScriptingInited && DateTime.UtcNow < guildInitializationDeadline)
{
Thread.Sleep(100);
}
if (!Program.m_ScriptingInited)
{
Program.m_Logger.Error("Guild data initialization did not finish within 30 seconds. Continuing startup; guild script natives may be unavailable until guild data is ready.");
Program.m_ScriptingInited = true;
}
Console.Write("\n");
}
else
{
StopEverything();
return;
}
//Load the plugins
PluginLoader.LoadPluginsAsync();
//Load all the other files.
Program.m_Logger.Write("Loading scripts and running their startup callbacks...");
Scripting.Manager.LoadFiles();
m_Setup = true;
Program.m_Logger.Write("Startup complete. Console input is ready.");
}
}
}