Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static InlineKeyboardMarkup CreateMarkupFromMenu(Menu menu)
- {
- if (menu == null) return null;
- var col = menu.Columns - 1;
- var final = new List<InlineKeyboardButton[]>();
- for (var i = 0; i < menu.Buttons.Count; i++)
- {
- var row = new List<InlineKeyboardButton>();
- do
- {
- var cur = menu.Buttons[i];
- row.Add(new InlineKeyboardButton
- {
- Text = cur.Text,
- CallbackData = $"{cur.Trigger}|{cur.ExtraData}",
- Url = cur.Url
- });
- i++;
- if (i == menu.Buttons.Count) break;
- } while (i % (col + 1) != 0);
- i--;
- final.Add(row.ToArray());
- if (i == menu.Buttons.Count) break;
- }
- return new InlineKeyboardMarkup(final.ToArray());
- }
- public class InlineButton
- {
- /// <summary>
- /// The button text
- /// </summary>
- public string Text { get; set; }
- /// <summary>
- /// What trigger to associate this button with. Make sure you create a CallbackCommand with the trigger set (Optional)
- /// </summary>
- public string Trigger { get; set; }
- /// <summary>
- /// Any extra data you want to include, not visible to the user (Optional)
- /// </summary>
- public string ExtraData { get; set; }
- /// <summary>
- /// Have this button link to a chat or website. (Optional)
- /// </summary>
- public string Url { get; set; }
- public InlineButton(string text, string trigger = "", string extraData = "", string url = "")
- {
- Url = url;
- Text = text;
- Trigger = trigger;
- ExtraData = extraData;
- }
- }
- public class Menu
- {
- /// <summary>
- /// The buttons you want in your menu
- /// </summary>
- public List<InlineButton> Buttons { get; set; }
- /// <summary>
- /// How many columns. Defaults to 1.
- /// </summary>
- public int Columns { get; set; }
- public Menu(int col = 1, List<InlineButton> buttons = null)
- {
- Buttons = buttons ?? new List<InlineButton>();
- Columns = Math.Max(col, 1);
- }
- }
- //Sample usage
- private static Menu CreateMenu(Group g, Instance db)
- {
- var menu = new Menu(2, new List<InlineButton>());
- menu.Buttons.Add(new InlineButton("Auto Kick Settings", "autokick", g.ID.ToString()));
- var nsfw = g.GetSetting<bool>("NSFW", db, false);
- menu.Buttons.Add(new InlineButton($"NSFW : {(nsfw ? "✅" : "🚫")}", "ts", $"{g.ID}|NSFW"));
- menu.Buttons.Add(new InlineButton("Done", "done"));
- return menu;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement