Example #1
0
        public static void Main(string[] args)
        {
            TextWriter fileOut = TextWriter.Synchronized(new StreamWriter(new FileStream("output.log", FileMode.Create)));

            Console.SetOut(new MultiWriter(Console.Out, fileOut));
            //Debug.Listeners.Add(new ConsoleTraceListener());
            DiscordEnvironment.CreateGateway(new BotToken("Mzg5NzIwNTg1MjI1MjQwNTc4.DTBrBQ.F_hS16KEEwjKothN6Mo8NoF2p-A"), "DebugBot", client => {
                Console.WriteLine("Setting up events...");
                Server s                  = Server.GetCached(300146519619796993U);
                s.TextChannelCreate      += L <ServerTextChannel>("s.TextChannelCreate");
                s.NonCatChannelCreate    += L <INonCatServerChannel>("s.NonCatChannelCreate");
                s.ChannelCreate          += L <IServerChannel>("s.ChannelCreate", true);
                ServerTextChannel.Create += L <ServerTextChannel>("ServerTextChannel.Create");
                TextChannel.Create       += L <TextChannel>("TextChannel.Create");
                ChannelUtils.NonCatServerChannelCreate += L <INonCatServerChannel>("ChannelUtils.NonCatServerChannelCreate");
                ChannelUtils.ServerChannelCreate       += L <IServerChannel>("ChannelUtils.ServerChannelCreate");
                ChannelUtils.ChannelCreate             += L("ChannelUtils.ChannelCreate");
                ChannelUtils.Create += L("ChannelUtils.Create");
                Console.WriteLine("Events created.");
                Console.ReadLine();
            });
            Console.ReadLine();

            //try {
            //ulong channel = 345312662646947851; // Server text
            //ulong channel = 0; // DM single
            //ulong channel = 311527722918608896; // Server voice
            //ulong channel = 0; // DM group
            //ulong channel = 375504585730686976; // Server category
            //DiscordDebug.WriteLine(Client.GetChannel(channel, token));
            //DiscordDebug.WriteLine(DiscordDebug.ToString(c.GetChannelAsync(channel).Await()));

            //ulong server = 311527722474143744;
            //DiscordDebug.WriteLine(DiscordDebug.ToString(c.GetServer(server)));
            //ITraceWriter w = new MemoryTraceWriter();
            //try {
            //DiscordDebug.WriteLine(c.GetServerJson(server, w).Await());
            //DiscordDebug.WriteLine(Client.GetServer(server, token));
            //} catch (Exception) {
            //DiscordDebug.WriteLine(w);
            //}

            //ulong user = 205899965984276480;
            //DiscordDebug.WriteLine(DiscordDebug.ToString(ServerUser.Get(user, c)));

            //ulong emoji = 324119851801247745;
            //DiscordDebug.WriteLine(DiscordDebug.ToString(Emoji.Get(server, emoji, c)));
            //DiscordDebug.WriteLine(DiscordDebug.ToString(c.GetServerEmojiAsync(server, emoji).Await()));
            //} catch (Exception e) {
            //DiscordDebug.WriteLine(e);
            //}
        }
Example #2
0
        public void Start(ReceiveGatewayData helloData, bool reconnect)
        {
            Thread starter = DiscordEnvironment.CreateSubthread(() => {
                if (reconnect)
                {
                    _heartbeat.Stop();
                    _heartbeat.Dispose();
                }
                _fire = true;
                //Task initBeat = HeartbeatAsync();
                _heartbeat = new Timer(((GatewayHelloData)helloData.Data).HeartbeatInterval.TotalMilliseconds)
                {
                    AutoReset           = true,
                    SynchronizingObject = null
                };
                _heartbeat.Elapsed += (sender, args) => HeartbeatAsync().Await();
                _heartbeat.Start();
                //initBeat.Await();
                _ackMutex.Wait();
                if (_aborts > 0)
                {
                    _fire = false;
                    _aborts--;
                    _ackMutex.Release();
                }
                else
                {
                    bool oldFire = _fire;
                    _fire        = false;
                    _ackMutex.Release();
                    if (oldFire)
                    {
                        Started?.Invoke(this, true);
                    }
                }
            });

            starter.Start();
        }