Example #1
0
        public ReactMenuBuilder WithOption(string Description, IEmote ButtonEmote, ReactMenu.ButtonCallback OnPressed = null, ReactMenu.ButtonCallback OnReleased = null)
        {
            ReactMenu.OptionInfo Option = new ReactMenu.OptionInfo
            {
                Description = Description,
                Button      = ButtonEmote
            };
            if (OnPressed != null)
            {
                Option.PressedCallback += OnPressed;
            }
            else if (DefaultPressedCallback != null)
            {
                Option.PressedCallback += DefaultPressedCallback;
            }

            if (OnReleased != null)
            {
                Option.ReleasedCallback += OnReleased;
            }
            else if (DefaultReleasedCallback != null)
            {
                Option.ReleasedCallback += DefaultReleasedCallback;
            }

            Menu.Options.Add(Option);

            return(this);
        }
Example #2
0
        private Task ReactionRemoved(Cacheable <IUserMessage, ulong> Message, ISocketMessageChannel Channel, SocketReaction Reaction)
        {
            if (Reaction.User.Value.IsBot)
            {
                return(Task.CompletedTask);
            }

            ReactMenu Menu;

            if (Menus.TryGetValue(Message.Id, out Menu))
            {
                ReactMenu.OptionInfo Option = Menu.GetOptionByEmoji(Reaction.Emote);
                Option.Released(Client, Channel, Reaction.User.Value);
            }

            return(Task.CompletedTask);
        }
Example #3
0
        private async Task ReactionAdded(Cacheable <Discord.IUserMessage, ulong> Message, ISocketMessageChannel Channel, SocketReaction Reaction)
        {
            if (Reaction.User.Value.IsBot)
            {
                return;
            }

            ReactMenu Menu;

            if (Menus.TryGetValue(Message.Id, out Menu))
            {
                ReactMenu.OptionInfo Option = Menu.GetOptionByEmoji(Reaction.Emote);
                await Option.Pressed(Client, Channel, Reaction.User.Value);

                if (Menu.ClearReactAfterPress)
                {
                    var Msg = await Message.GetOrDownloadAsync();

                    await Msg.RemoveReactionAsync(Reaction.Emote, Reaction.User.Value);
                }
            }
        }