> ## Documentation Index
> Fetch the complete documentation index at: https://botpress-charmenta-pr-693.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord

> Add your bot to Discord using the official integration.

export const OpenInHub = ({integration}) => {
  const {version, id} = integration || ({});
  const basePath = 'https://studio.botpress.cloud/home?exploreHub=1&hubItemId=';
  const url = `${basePath}${id}`;
  return <>
            <a className="button rounded-xl" href={url}>
                <span>
                Open in Hub
                </span>
            </a>
            <i style={{
    margin: "0",
    fontStyle: "normal",
    color: "#666",
    fontSize: "0.85rem",
    padding: '.5rem'
  }}>
                v{version}
            </i>
        </>;
};

export const integrationVersions = {
  "accelo": {
    "version": "2.0.0",
    "id": "intver_01JFAQHPVKP4XTKMNXC2RZKZ88"
  },
  "activecampaign": {
    "version": "2.0.0",
    "id": "intver_01JFAQHVA0Z25PFC7H13EQ41FR"
  },
  "acumatica": {
    "version": "2.0.0",
    "id": "intver_01JFAQHZTNGNHPPS9CKD35Q6EY"
  },
  "airtable": {
    "version": "3.0.0",
    "id": "intver_01KQYW202230PVRW9RVA68VRYR"
  },
  "alchemer": {
    "version": "2.0.0",
    "id": "intver_01JFAQQZRS9ZQ7WBWHCF1MKGCM"
  },
  "anthropic": {
    "version": "18.0.1",
    "id": "intver_01KQYW62BM57D669VPPSAKXGHG"
  },
  "anydesk": {
    "version": "2.0.0",
    "id": "intver_01JFAQR4048H4976FCKT2YHD2X"
  },
  "apollo": {
    "version": "3.0.2",
    "id": "intver_01K6BJFKR5WZV44VNENAN6XBT1"
  },
  "asana": {
    "version": "0.3.13",
    "id": "intver_01KMZACD2E15B0RZB8RJ2XN2JX"
  },
  "attio": {
    "version": "1.0.3",
    "id": "intver_01KMZACN5Z3VJK0W280ED7G4Y0"
  },
  "avoma": {
    "version": "2.0.0",
    "id": "intver_01JFAQRC955G4CXN8QTFHXAPXZ"
  },
  "bamboohr": {
    "version": "2.1.2",
    "id": "intver_01KMZACXWM0GDNQF5PS3QBPQDN"
  },
  "beehiiv": {
    "version": "2.0.0",
    "id": "intver_01JFAQRGRRB95YC5YKWB1BFHZH"
  },
  "bigcommerce": {
    "version": "3.2.4",
    "id": "intver_01KMZAD5GM0P6BGFJHKE2QDDR8"
  },
  "bigin": {
    "version": "2.0.0",
    "id": "intver_01JFAQRS4Q0AY8CEAGYTDMPEPV"
  },
  "bolt": {
    "version": "2.0.0",
    "id": "intver_01JFAQRXGEVSFY1PYM195NAWQ6"
  },
  "box": {
    "version": "2.0.0",
    "id": "intver_01JFAQS1NBSGECDYX5MTTFN7RK"
  },
  "braze": {
    "version": "2.0.0",
    "id": "intver_01JFAQS5V6T5HF7MRJ46NMP42B"
  },
  "brevo": {
    "version": "2.0.0",
    "id": "intver_01JFAQSA1R5F1JGJZS55VTC1RP"
  },
  "britive": {
    "version": "2.0.0",
    "id": "intver_01JFAQSE7EMRGQE8EQD2CB6AZR"
  },
  "browser": {
    "version": "0.8.8",
    "id": "intver_01KPBEHKBJD4MZ0ZDWEBMHX74D"
  },
  "bynder": {
    "version": "2.0.0",
    "id": "intver_01JFAQSJT5N0Q2J2K7KGG12QQ5"
  },
  "calcom": {
    "version": "0.4.2",
    "id": "intver_01KMZADKWGWXARSDEH5VES64JY"
  },
  "calendly": {
    "version": "0.0.5",
    "id": "intver_01KMZADVPKFVFATR33S36R2NQ8"
  },
  "canny": {
    "version": "0.2.3",
    "id": "intver_01KMZAE3W37N658H69Y6ZPSREQ"
  },
  "capsule-crm": {
    "version": "2.0.0",
    "id": "intver_01JFAQSQ6CJJ6G9FK7PAACKE6X"
  },
  "cerebras": {
    "version": "9.0.0",
    "id": "intver_01KNRZZPBTBA0FAHVDVGAJNBJ1"
  },
  "charts": {
    "version": "0.2.8",
    "id": "intver_01KMZAEJVYBMNRMP01816TVEBH"
  },
  "chat": {
    "version": "1.0.0",
    "id": "intver_01KNSDHSSEHCX633DGB62V2ZB8"
  },
  "checkout": {
    "version": "2.0.0",
    "id": "intver_01JFAQSVA80GG51V7QKTARFG0E"
  },
  "clari": {
    "version": "2.0.0",
    "id": "intver_01JFAQSZVXNWXV8371M8ACEPFV"
  },
  "clay": {
    "version": "2.0.0",
    "id": "intver_01JFAQT424E25GR5K1Q8PZC4SC"
  },
  "clickup": {
    "version": "0.0.3",
    "id": "intver_01KMZAF5TCYZNN80SFM4MCASB5"
  },
  "close": {
    "version": "2.0.0",
    "id": "intver_01JFAQT8BMZG66DNJM1DBZ2EQ3"
  },
  "cognism": {
    "version": "2.0.0",
    "id": "intver_01JFAQTCC9XR5N28RA4SNZ8KYJ"
  },
  "comeet": {
    "version": "2.0.0",
    "id": "intver_01JFAQTGMDYR086FC0VEQ95VGC"
  },
  "confluence": {
    "version": "3.3.4",
    "id": "intver_01KMZAFH0Z4679X7P0SSY18DPV"
  },
  "copper": {
    "version": "2.0.0",
    "id": "intver_01JFAQTS5YQTVNMSRMTH12X4YC"
  },
  "creatio": {
    "version": "2.0.0",
    "id": "intver_01JFAQTXY9Z4S1XDWSBT4J4KJJ"
  },
  "crmone": {
    "version": "2.0.0",
    "id": "intver_01JFAQV28DCXF7SV71N9Q5BJC8"
  },
  "dalle": {
    "version": "0.3.8",
    "id": "intver_01KMZAFVDB02KE332TQ930T76J"
  },
  "databricks": {
    "version": "0.0.4",
    "id": "intver_01JBMK24H270H1ZTH2E8P34V4J"
  },
  "demandbase": {
    "version": "2.0.0",
    "id": "intver_01JFAQV9ZZ9MHH2ENEQ1ERMY2G"
  },
  "desk": {
    "version": "1.0.0",
    "id": "intver_01KGQ972H97YAN3D3KY9425JYN"
  },
  "discord": {
    "version": "1.2.1",
    "id": "intver_01KREWJHF8AZMBHH3JC5XFSFTB"
  },
  "docusign": {
    "version": "2.0.0",
    "id": "intver_01JFAQVKFW4F7BBRSDD7EEZE6Z"
  },
  "dropbox": {
    "version": "2.0.1",
    "id": "intver_01KMZAG63Y41V6CJGWD858VKQN"
  },
  "email": {
    "version": "0.1.4",
    "id": "intver_01KMZAGF70MCA75BCVVY3DGHXD"
  },
  "enchant": {
    "version": "2.0.0",
    "id": "intver_01JFAQVQQ60DZV01V3D1GA29YG"
  },
  "engagebay": {
    "version": "2.0.0",
    "id": "intver_01JFAQVVW42J4KNWCEZ6VQ3ZSJ"
  },
  "fathom": {
    "version": "2.0.0",
    "id": "intver_01JFAQW0QPEJS7M4EPVN9GJJDK"
  },
  "feature-base": {
    "version": "1.0.3",
    "id": "intver_01KMZAGPXHR49811P7S89CWN35"
  },
  "fireworks-ai": {
    "version": "11.0.0",
    "id": "intver_01KNS0091R8GPT9C088F3F3PE0"
  },
  "fivetran": {
    "version": "2.0.0",
    "id": "intver_01JFAQW55482FWTDSPCYT53DWE"
  },
  "flodesk": {
    "version": "2.0.0",
    "id": "intver_01JFAQW9APE7Z8E81T2F58VDM7"
  },
  "folk": {
    "version": "2.0.0",
    "id": "intver_01JFAQWDVG2DVFYKJRD8DMHVPZ"
  },
  "freshchat": {
    "version": "1.5.5",
    "id": "intver_01KMZAH6YY639ZNJTGDMTH25GT"
  },
  "freshsales": {
    "version": "2.0.0",
    "id": "intver_01JFAQWJ3CC3DJ5KG0W6XP33FD"
  },
  "fullstory": {
    "version": "2.0.0",
    "id": "intver_01JFAQWPM0T9EH5SAGDQ3Z14ZC"
  },
  "gainsight": {
    "version": "2.0.0",
    "id": "intver_01JFAQWTPKB13Y7619A6GEN5HQ"
  },
  "getaccept": {
    "version": "2.0.0",
    "id": "intver_01JFAQWZ0SAMDJVQNNA86RG21M"
  },
  "getresponse": {
    "version": "2.0.0",
    "id": "intver_01JFAQX34P2PBW0EM9NC6ZGFT5"
  },
  "github": {
    "version": "1.2.1",
    "id": "intver_01KMZAHF5WMDMTT9H6V3DQ8T50"
  },
  "gladly": {
    "version": "2.0.0",
    "id": "intver_01JFAQX7B29WE85VA8N5BCST16"
  },
  "gmail": {
    "version": "1.0.7",
    "id": "intver_01KMZAHQQ8YSB2DRVR1B6YXNCN"
  },
  "google-ai": {
    "version": "8.0.0",
    "id": "intver_01KNS00R1R8P4N2J4SVN6HHX4P"
  },
  "google-analytics": {
    "version": "1.0.0",
    "id": "intver_01KPRHR42CF02FMDDGSF0TG0DB"
  },
  "googlecalendar": {
    "version": "2.0.9",
    "id": "intver_01KMZAJAKBEZKGH0ZPQJBR1VAE"
  },
  "googledrive": {
    "version": "0.4.2",
    "id": "intver_01KMZAJJE94ZYG631DQM93B9RN"
  },
  "groq": {
    "version": "16.0.0",
    "id": "intver_01KNS015P14BRMA1C0CJG239M4"
  },
  "gsheets": {
    "version": "2.1.9",
    "id": "intver_01KP5Z7BRNQNGVY406742M7BBE"
  },
  "gusto": {
    "version": "2.0.0",
    "id": "intver_01JFAR75Y17N5EWS6P0PC93RHQ"
  },
  "happyfox": {
    "version": "2.0.0",
    "id": "intver_01JFAQXFNYWCXX819GTBHJ470W"
  },
  "help-scout": {
    "version": "2.0.0",
    "id": "intver_01JFAQXKX61YWJMMHYK3YDFZ0K"
  },
  "hitl": {
    "version": "2.0.2",
    "id": "intver_01K0SV5HZAT9FSVVEB7S91SH4F"
  },
  "honeybook": {
    "version": "2.0.0",
    "id": "intver_01JFAQXRQ8TADY78EBPBKSXFPC"
  },
  "hubspot": {
    "version": "6.0.5",
    "id": "intver_01KRPJKZ1ER9XBZQC5QTXBRGND"
  },
  "hunter": {
    "version": "1.0.2",
    "id": "intver_01KMZAKV7RM16T6375G0JXDYHH"
  },
  "instagram": {
    "version": "4.1.9",
    "id": "intver_01KRC18D2WGRKT0G2SRZQ5VE3Z"
  },
  "instantly": {
    "version": "2.0.0",
    "id": "intver_01JFAQXWNN3ZM0DAQBE7N2BP54"
  },
  "intercom": {
    "version": "2.0.4",
    "id": "intver_01KMZAMCN5KTKK60239ADVZGCP"
  },
  "keap": {
    "version": "2.0.0",
    "id": "intver_01JFAQY1A6AQGSZRPKRJ11649R"
  },
  "kit": {
    "version": "2.0.0",
    "id": "intver_01JFAQYAZCH51RNSK7XT8ZKFZC"
  },
  "klaviyo": {
    "version": "3.0.2",
    "id": "intver_01K6BFXSKB0G4KMVGJPTR1X835"
  },
  "knack": {
    "version": "2.0.0",
    "id": "intver_01JFAQYKKW7JQJYH5GQW95AXFJ"
  },
  "kommo": {
    "version": "0.1.0",
    "id": "intver_01KN89QSX1YDM04NFRHK0WKZMG"
  },
  "kustomer": {
    "version": "2.0.0",
    "id": "intver_01JFAQYR6A4M0527JHDSNXN4TY"
  },
  "kylas": {
    "version": "2.0.0",
    "id": "intver_01JFAQYWG9PSP9076S99BE546R"
  },
  "leadsquared": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ0PFZ7W5AJN0MZQJHGW7"
  },
  "leandata": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ54J1MYP5D4WXZ1Z7KK7"
  },
  "less-annoying-crm": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ99G8ZWD4847189A4EGS"
  },
  "line": {
    "version": "2.0.6",
    "id": "intver_01KMZAMNQDY2BZAW86RZ58VSQY"
  },
  "linear": {
    "version": "2.5.0",
    "id": "intver_01KRHWEFJX783DXZG4XZ7B6ER8"
  },
  "linkedin": {
    "version": "0.1.3",
    "id": "intver_01KN89RB1CBCP1MGAYEBHMCT5Q"
  },
  "localiq": {
    "version": "2.0.0",
    "id": "intver_01JFAQZDKZQV3J44CJF074YHXZ"
  },
  "loops": {
    "version": "0.1.5",
    "id": "intver_01KMZANASVEZEW761JG63F1RM0"
  },
  "mailchimp": {
    "version": "0.3.12",
    "id": "intver_01KMZANJGYPESPJHZJ7NPEE7C6"
  },
  "mailerlite": {
    "version": "3.0.2",
    "id": "intver_01K6BFZTMA8A1Z3KV1QXGWB61S"
  },
  "make": {
    "version": "0.3.9",
    "id": "intver_01KMZANTJE8DN94EE6K74ETJ0Z"
  },
  "mcp-client": {
    "version": "0.1.0",
    "id": "intver_01KQWWKVJFV3DD65PR233GRHMH"
  },
  "messenger": {
    "version": "5.1.8",
    "id": "intver_01KPDRM4RJN85JM6DRP43W48PX"
  },
  "mindtickle": {
    "version": "2.0.0",
    "id": "intver_01JFAQZNRAZMBAEZ943WY44EXD"
  },
  "mintlify": {
    "version": "1.0.1",
    "id": "intver_01KMZAPEVTD6HZ9BPRHVK09DC5"
  },
  "mistral-ai": {
    "version": "1.0.0",
    "id": "intver_01KNS021C2ZFXWGAXC5TFAXBA9"
  },
  "monday": {
    "version": "1.0.2",
    "id": "intver_01KMZAQ1357YEQBMVPHQ8QYSAF"
  },
  "mural": {
    "version": "2.0.0",
    "id": "intver_01JFAQZT1R0PR8C59Z1MHWMG83"
  },
  "notion": {
    "version": "3.0.5",
    "id": "intver_01KN89RW8Z2ZK98F8JM8X66RXS"
  },
  "nutshell": {
    "version": "2.0.0",
    "id": "intver_01JFAQZYAY7HCM2VTWTZK0GHZ6"
  },
  "odoo": {
    "version": "0.1.0",
    "id": "intver_01KRC19AE1XTHSSW6D0FZPJZ1H"
  },
  "okta": {
    "version": "2.0.0",
    "id": "intver_01JFAR02JMED7RK95YXCDRVNXX"
  },
  "openai": {
    "version": "20.0.0",
    "id": "intver_01KNS02E7FF0WQAYXWJDM3ZZNQ"
  },
  "outreach": {
    "version": "2.0.0",
    "id": "intver_01JFAR0717CX7YJNEX0FXRR8TN"
  },
  "pandadoc": {
    "version": "2.0.0",
    "id": "intver_01JFAR0BBGR1EGMRR2PRGHRABB"
  },
  "pdf-generator": {
    "version": "0.0.7",
    "id": "intver_01KMZAQP6WG231KVJSEY88KG2J"
  },
  "pimcore": {
    "version": "2.0.0",
    "id": "intver_01JFAR0FRDMZNK1B1EYKTHKANP"
  },
  "pipedrive": {
    "version": "5.0.1",
    "id": "intver_01K6BG0EMJ1FQ0E5DCZZEN9301"
  },
  "pipeliner": {
    "version": "2.0.0",
    "id": "intver_01JFAR0R7XHB7VYX0Q0ETV9B3F"
  },
  "plaid": {
    "version": "2.0.0",
    "id": "intver_01JFAR0WH09T4MRTTQHRAH2ESD"
  },
  "planhat": {
    "version": "2.0.0",
    "id": "intver_01JFAR10SHDPEPXTJN6RRB9H6S"
  },
  "plus/apify": {
    "version": "1.0.4",
    "id": "intver_01KH6R8P2ZYNACH8KQED02E9YC"
  },
  "plus/brevo-hitl": {
    "version": "2.0.0",
    "id": "intver_01K392AS04342HT6Z2HZZ60A2D"
  },
  "plus/chatwoot": {
    "version": "1.0.4",
    "id": "intver_01KD3BFCBTV2PNJ80V3VYFBC4M"
  },
  "plus/email-notifier": {
    "version": "1.1.1",
    "id": "intver_01KB0YDR2AQ5A8H0GBZ35J51MQ"
  },
  "plus/go-high-level": {
    "version": "1.0.4",
    "id": "intver_01K6BDMWTZ7FNKTGD4N8YDPH1H"
  },
  "plus/google-analytics": {
    "version": "0.2.4",
    "id": "intver_01HXS7S3FCANEG2EN5FKKWH722"
  },
  "plus/google-chat-spaces": {
    "version": "1.0.3",
    "id": "intver_01K6BDNG0ZNW5JXRA5RDQJQCWN"
  },
  "plus/google-sheets": {
    "version": "1.2.5",
    "id": "intver_01K6BDP63K6Y5HFVJ84R7EKP0Y"
  },
  "plus/hitl-api": {
    "version": "0.2.0",
    "id": "intver_01J804C5W78Y5FWHHNVWMR5VM3"
  },
  "plus/hubspot-help-desk-hitl": {
    "version": "3.1.1",
    "id": "intver_01KC2AWT9BDMTHV36AJRVEF4DN"
  },
  "plus/hubspot-hitl": {
    "version": "5.0.4",
    "id": "intver_01K6BF9Q6D3M6T3J3V541ZJC8Z"
  },
  "plus/huggingface": {
    "version": "0.0.1",
    "id": "intver_01J6FP62B7KEHH4NC4R7NBBTW5"
  },
  "plus/intercom-hitl": {
    "version": "2.0.5",
    "id": "intver_01KEWH6D0NF81Q1WB8W8V225A8"
  },
  "plus/jira": {
    "version": "0.2.4",
    "id": "intver_01KCVM0T96KA8YK723W3N8P494"
  },
  "plus/livechat-hitl": {
    "version": "3.0.2",
    "id": "intver_01K6BFYE44DVXKVFXBHKZED8P9"
  },
  "plus/magento2": {
    "version": "2.0.4",
    "id": "intver_01K6BKG43JX1R6ZEB4CXJ6R65D"
  },
  "plus/messaging": {
    "version": "0.2.3",
    "id": "intver_01HVM0R2R0QXWNH3BEZPYFK6ZJ"
  },
  "plus/mixpanel": {
    "version": "0.2.3",
    "id": "intver_01HXABTRSS5J9K0G1S1MPCX8J9"
  },
  "plus/persat": {
    "version": "1.0.0",
    "id": "intver_01K75D7C0JTQ5FY058T1187G32"
  },
  "plus/salesforce": {
    "version": "1.0.2",
    "id": "intver_01JRTXEF3N4CG8D668ANNW40DS"
  },
  "plus/segment": {
    "version": "0.2.4",
    "id": "intver_01HX7R8GHK3BKX2RHER1KYV0VT"
  },
  "plus/sharepoint": {
    "version": "4.1.0",
    "id": "intver_01K8XWKTBHY5AX8JTBV4T0D4V6"
  },
  "plus/sharepoint-excel": {
    "version": "2.2.1",
    "id": "intver_01K6BKHB4TQ5RFVA6W1VKAREFB"
  },
  "plus/shopify-products-sync": {
    "version": "3.0.2",
    "id": "intver_01K8VDHZ8FM3ZDMTYA8Y7EDXTT"
  },
  "plus/twiliovoice": {
    "version": "0.2.3",
    "id": "intver_01K6BKKDTZ1X8ECNS52N96M8AM"
  },
  "plus/zoho": {
    "version": "3.0.0",
    "id": "intver_01JNRREVZ0BA8VKEKMPMRF0DW5"
  },
  "plus/zohosalesiq": {
    "version": "2.0.0",
    "id": "intver_01JP37YJSERZGZQQW369F7W27C"
  },
  "plus/zoho-sales-iq-hitl": {
    "version": "3.0.0",
    "id": "intver_01K397TXPTA9982A829WV7XNX5"
  },
  "plus/zoom": {
    "version": "3.1.1",
    "id": "intver_01KAEBBGJ327TGZ0AZW31H6S19"
  },
  "posthog": {
    "version": "2.0.0",
    "id": "intver_01JFAR153DTQEGNZXMA4PAAV7D"
  },
  "postman": {
    "version": "2.0.0",
    "id": "intver_01JFAR19F7PZWCD9CBKAB30540"
  },
  "postmark": {
    "version": "0.1.0",
    "id": "intver_01KQ01G3YEPEXVNP2SFH49079G"
  },
  "quickbooks": {
    "version": "2.0.0",
    "id": "intver_01JFAR1E05TRXX8ZHQ52QMG2KJ"
  },
  "reachdesk": {
    "version": "2.0.0",
    "id": "intver_01JFAR1JD70W5VTGDEDGFQXKEB"
  },
  "resend": {
    "version": "0.1.10",
    "id": "intver_01KMZAQXVC4KP20TFCJNGY8PKV"
  },
  "revenuehero": {
    "version": "2.0.0",
    "id": "intver_01JFAR1PDG5ZQHDAT4PX3J67N5"
  },
  "rippling": {
    "version": "0.0.4",
    "id": "intver_01JBMK2M3NWMH63ZTQBSQSEXHB"
  },
  "sage": {
    "version": "2.0.0",
    "id": "intver_01JFAR8RTCW2P6C8VWSMN7FQFS"
  },
  "salesflare": {
    "version": "2.0.0",
    "id": "intver_01JFAR2316BGX6S5NS812P3K1Z"
  },
  "salesforce": {
    "version": "1.0.0",
    "id": "intver_01KN5FRKT6KRAB6RM9T34J70M2"
  },
  "salesloft": {
    "version": "2.0.0",
    "id": "intver_01JFAR27CFAGF2479ER2FSSDF7"
  },
  "sap": {
    "version": "2.0.0",
    "id": "intver_01JFAR2BP4TDJTAGWN841KBC1S"
  },
  "seismic": {
    "version": "2.0.0",
    "id": "intver_01JFAR2G7J0GAC6J69K8TN3429"
  },
  "sendgrid": {
    "version": "0.1.10",
    "id": "intver_01KMZAR5KN275G2NPSSFZ9WTSE"
  },
  "showpad": {
    "version": "2.0.0",
    "id": "intver_01JFAR2MD45546TPY7V2CPBAMD"
  },
  "sisense": {
    "version": "2.0.0",
    "id": "intver_01JFAR2RSBXRYQ5YX9JNTP4A9C"
  },
  "slack": {
    "version": "5.0.2",
    "id": "intver_01KQF3XKNH2W5EPAXK6G4CMW96"
  },
  "smartsheet": {
    "version": "2.0.0",
    "id": "intver_01JFAR2WXTE6FV2C2HP7V0WBTE"
  },
  "splunk": {
    "version": "0.0.4",
    "id": "intver_01JBMK2Y874WV5BGHXYN07HKHE"
  },
  "square": {
    "version": "2.0.0",
    "id": "intver_01JFARACGK6NT3YTKC5KVXVKX6"
  },
  "stripe": {
    "version": "0.5.6",
    "id": "intver_01KMZARNC46Y0CJTQNR5AA8AKD"
  },
  "sunco": {
    "version": "2.0.1",
    "id": "intver_01KMZARX5E90SJEDCQ6GKZ4ZBV"
  },
  "surveymonkey": {
    "version": "2.0.0",
    "id": "intver_01JFAR3A2K8BEMP4XHQ7F5R47R"
  },
  "tableau": {
    "version": "2.0.0",
    "id": "intver_01JFAR3E9K4XXVYFE7SSGT1C9E"
  },
  "tally": {
    "version": "0.1.2",
    "id": "intver_01KMZAS4KR8F34JNE9VP1HJXT9"
  },
  "teamleader": {
    "version": "2.0.0",
    "id": "intver_01JFAR3JKE5HAGV6TBCW7SV4QM"
  },
  "teams": {
    "version": "2.0.4",
    "id": "intver_01KMZASBVV28FFKB2227618RRM"
  },
  "teamviewer": {
    "version": "2.0.0",
    "id": "intver_01JFAR3PY3EBMYYBKQTZAHESXP"
  },
  "telegram": {
    "version": "1.0.7",
    "id": "intver_01KQYYDZKSAHXH5DRK1ES6CKNS"
  },
  "thryv": {
    "version": "2.0.0",
    "id": "intver_01JFAR3VQXXNJTR85472MM0RDY"
  },
  "todoist": {
    "version": "1.0.5",
    "id": "intver_01KMZASWGQHERWV5WESYJR1W1R"
  },
  "trello": {
    "version": "2.1.3",
    "id": "intver_01KMZAT7K4J1JWT5VCV838TFRN"
  },
  "twilio": {
    "version": "1.3.2",
    "id": "intver_01KMZATFC2J1KF4J3T93HPFKGF"
  },
  "vcita": {
    "version": "2.0.0",
    "id": "intver_01JFAR3ZXVBWKYYJ53W7C4E4VB"
  },
  "vercel": {
    "version": "2.0.0",
    "id": "intver_01JFAR44YN7JA1Z86S8CACVG5C"
  },
  "viber": {
    "version": "1.0.5",
    "id": "intver_01KMZATNKPMTPMYBQNZN6744N4"
  },
  "vonage": {
    "version": "1.0.4",
    "id": "intver_01KMZATWVPMNCXAF3XB72FNHKS"
  },
  "webchat": {
    "version": "0.3.0",
    "id": "intver_01JBVV0VQW8XN3Z5V9K8DB1M3B"
  },
  "webflow": {
    "version": "3.1.4",
    "id": "intver_01KMZAV5CCPAJKR8S1M36266M8"
  },
  "webhook": {
    "version": "1.1.5",
    "id": "intver_01KMZAVBMNBFJBA9SM7ATDS5R8"
  },
  "wechat": {
    "version": "0.1.1",
    "id": "intver_01KMZAVJTKWA8CQ8A7KFRDYR5X"
  },
  "whatsapp": {
    "version": "4.15.0",
    "id": "intver_01KRC1AEDCE4P5HTZP5G41495H"
  },
  "workable": {
    "version": "0.1.2",
    "id": "intver_01KMZAWAMH776SVXW1R98ABBHP"
  },
  "workday": {
    "version": "2.0.0",
    "id": "intver_01JFARBCCKWG9BS7DT2RBW9D7B"
  },
  "wrike": {
    "version": "2.0.0",
    "id": "intver_01JFAR4H5WXG78YBE7MEG967MW"
  },
  "zapier": {
    "version": "0.3.10",
    "id": "intver_01KMZAWN77ZX053EB5VJH7C9B9"
  },
  "zendesk": {
    "version": "3.0.6",
    "id": "intver_01KFGPZM7JH7PMSEBRSSM5C4H8"
  },
  "zendesk-messaging-hitl": {
    "version": "1.1.0",
    "id": "intver_01KPRHTAYTB64Z5QEDC1XZCSYH"
  },
  "zendesk-sell": {
    "version": "2.0.0",
    "id": "intver_01JFAR4NP3JGG1BPV4MFJ2HBC3"
  },
  "zoho": {
    "version": "3.1.4",
    "id": "intver_01KMZAX48A0JA4Q0CD3B7REDT0"
  },
  "zoom": {
    "version": "0.1.0",
    "id": "intver_01KNSQZR3F06SRHJY3BCN20JH9"
  }
};

<OpenInHub integration={integrationVersions.discord} />

The official Discord integration allows users to chat with your bot in Discord servers, threads, and direct messages.

## Setup

<Info>
  You will need:

  * A [published bot](/get-started/quick-start)
  * A [Discord account](https://discord.com/) with permission to create applications
</Info>

<Steps>
  <Step title="Install the integration in Botpress">
    First, install the integration to your bot:

    1. In Botpress Studio, select **<Icon icon="boxes" /> Explore Hub** in the upper-right corner.
    2. Search for the **Discord** integration.
    3. Select **Install Integration**.

    In the **Configuration** menu, you should see one field:

    * **Bot Token**

    Leave it empty for now—you'll come back to it after completing the setup in Discord.
  </Step>

  <Step title="Create a Discord application">
    Next, create a Discord application:

    1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) and sign in.
    2. Select **New Application** in the top-right corner.
    3. Give your application a name and select **Create**.
  </Step>

  <Step title="Create a bot user">
    Now, create a bot user for your application:

    1. In your application's left sidebar, select **Bot**.
    2. Under the bot's username, you can optionally set a custom avatar and display name.
    3. Under **Privileged Gateway Intents**, enable the following:
       * **Server Members Intent**
       * **Message Content Intent**
    4. Select **Save Changes**.
  </Step>

  <Step title="Copy your bot token">
    Next, copy your bot's token:

    1. Still on the **Bot** page, below **Token**, select **Reset Token** (or **Copy** if a token is already visible).
    2. Confirm the reset if prompted.
    3. Copy the token and store it somewhere safe—you will not be able to see it again.

    <Warning>
      Never share your bot token publicly or commit it to version control. Anyone with access to this token can control your bot.
    </Warning>
  </Step>

  <Step title="Invite the bot to your server">
    Now, invite the bot to your Discord server:

    1. In the left sidebar, select **OAuth2** > **OAuth2 URL Generator**.
    2. Under **Scopes**, select:
       * `bot`
       * `applications.commands`
    3. Under **Bot Permissions**, select the permissions your bot requires. At minimum:
       * **View Channels**
       * **Send Messages**
       * **Create Public Threads**
       * **Create Private Threads**
       * **Send Messages in Threads**
       * **Pin Messages**
       * **Attach Files**
       * **Read Message History**
       * **Add Reactions**
       * **Create Polls**
    4. Copy the generated URL at the bottom of the page and open it in your browser.
    5. Select the server you want to add the bot to and select **Authorize**.
  </Step>

  <Step title="Configure the integration in Botpress">
    In your Botpress integration configuration, click "Connect with OAuth", then follow the instructions in the wizard to fill out the following fields:

    1. In the integration's **Bot Token** field, paste your Discord bot token.
    2. Select **Save Configuration**.
  </Step>
</Steps>

<Check>
  Your Discord integration is ready—users can now chat with your Botpress bot in Discord servers, threads, and direct messages.
</Check>

***

## Options

The Discord integration's **Configuration** menu offers a few additional options:

### Custom display name / avatar

* Fill in the **Bot Name** field to display a custom name as the sender in Discord conversations.
* Fill in the **Bot Avatar URL** field to set a custom image as the bot's Discord avatar.

<Note>
  The avatar URL must be publicly accessible. Supported formats include PNG, JPG, and GIF.
</Note>

***

## Cards

{/* vale off */}

Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration:

### Add Member Role

<span>
  {"Add a role to a guild member"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user"}
      </span>
    </ResponseField>

    <ResponseField name="roleId" type="string" required>
      <span>
        {"The ID of the role to add"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for adding the role (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Add Reaction

<span>
  {"Create a reaction for the message"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The id of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The id of the message"}
      </span>
    </ResponseField>

    <ResponseField name="emoji" type="string" required>
      <span>
        {"Can be either the actual emoji or its id"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Ban User

<span>
  {"Ban a user from a guild"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user to ban"}
      </span>
    </ResponseField>

    <ResponseField name="deleteMessageSeconds" type="number">
      <span>
        {"Number of seconds of messages to delete (0-604800)"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for the ban (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Call API

<span>
  {"Send a raw HTTP request to any Discord API endpoint"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="path" type="string" required>
      <span>
        {"The API path (e.g. /channels/123/messages)"}
      </span>
    </ResponseField>

    <ResponseField name="queryParams" type="array">
      <span>
        {"The query parameters to send along with the request"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="key" type="string" required />

        <ResponseField name="value" type="string" required />
      </Expandable>
    </ResponseField>

    <ResponseField name="method" type="enum<string>" required>
      <span>
        {"The HTTP method to use"}
      </span>

      Available options: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
    </ResponseField>

    <ResponseField name="body" type="string">
      <span>
        {"JSON string to send as the request body"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="success" type="boolean" required>
      <span>
        {"Whether the request was successful"}
      </span>
    </ResponseField>

    <ResponseField name="body" type="string">
      <span>
        {"The response body as an object if the request was successful"}
      </span>
    </ResponseField>

    <ResponseField name="error" type="string">
      <span>
        {"The error message if the request was not successful"}
      </span>
    </ResponseField>

    <ResponseField name="status" type="number">
      <span>
        {"The HTTP status code of the response"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Create Channel

<span>
  {"Creates a new channel in a guild."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild to create the channel in"}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"The name of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="type" type="number">
      <span>
        {"Channel type. Defaults to Guild Text (0)."}
      </span>
    </ResponseField>

    <ResponseField name="topic" type="string">
      <span>
        {"Channel topic"}
      </span>
    </ResponseField>

    <ResponseField name="position" type="number">
      <span>
        {"Sorting position of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="nsfw" type="boolean">
      <span>
        {"Whether the channel is NSFW"}
      </span>
    </ResponseField>

    <ResponseField name="parentId" type="string">
      <span>
        {"ID of the parent category"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"Channel ID"}
      </span>
    </ResponseField>

    <ResponseField name="type" type="number" required>
      <span>
        {"Channel type"}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string">
      <span>
        {"Channel name"}
      </span>
    </ResponseField>

    <ResponseField name="position" type="number">
      <span>
        {"Sorting position of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="parentId" type="string | null" />

    <ResponseField name="topic" type="string | null" />

    <ResponseField name="nsfw" type="boolean">
      <span>
        {"Whether the channel is NSFW"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Create Poll

<span>
  {"Creates a poll in a Discord channel."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel to create the poll in"}
      </span>
    </ResponseField>

    <ResponseField name="question" type="string" required>
      <span>
        {"The question of the poll"}
      </span>
    </ResponseField>

    <ResponseField name="answers" type="array" required>
      <span>
        {"The answers available in the poll (1-10)"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="text" type="string" required>
          <span>
            {"The text of the answer"}
          </span>
        </ResponseField>

        <ResponseField name="emoji" type="string">
          <span>
            {"An optional emoji for the answer"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="duration" type="number">
      <span>
        {"Number of hours the poll should be open for, up to 768 (32 days). Defaults to 24"}
      </span>
    </ResponseField>

    <ResponseField name="allowMultiselect" type="boolean">
      <span>
        {"Whether a user can select multiple answers. Defaults to false"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message containing the poll"}
      </span>
    </ResponseField>

    <ResponseField name="answers" type="array" required>
      <span>
        {"The poll answers with their Discord-assigned IDs"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="answerId" type="number" required>
          <span>
            {"The ID of the answer"}
          </span>
        </ResponseField>

        <ResponseField name="text" type="string" required>
          <span>
            {"The answer text"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Create Role

<span>
  {"Create a new role in a guild"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string">
      <span>
        {"Name of the role"}
      </span>
    </ResponseField>

    <ResponseField name="color" type="number">
      <span>
        {"RGB color value of the role"}
      </span>
    </ResponseField>

    <ResponseField name="hoist" type="boolean">
      <span>
        {"Whether the role should be displayed separately in the sidebar"}
      </span>
    </ResponseField>

    <ResponseField name="mentionable" type="boolean">
      <span>
        {"Whether the role can be mentioned"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for creating the role (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"The ID of the created role"}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Name of the role"}
      </span>
    </ResponseField>

    <ResponseField name="color" type="number" required>
      <span>
        {"RGB color value of the role"}
      </span>
    </ResponseField>

    <ResponseField name="hoist" type="boolean" required>
      <span>
        {"Whether the role is displayed separately in the sidebar"}
      </span>
    </ResponseField>

    <ResponseField name="position" type="number" required>
      <span>
        {"Position of the role in the hierarchy"}
      </span>
    </ResponseField>

    <ResponseField name="permissions" type="string" required>
      <span>
        {"Bitwise permissions value of the role"}
      </span>
    </ResponseField>

    <ResponseField name="mentionable" type="boolean" required>
      <span>
        {"Whether the role can be mentioned"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Delete Channel

<span>
  {"Deletes a channel from a guild."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel to delete"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Delete Reaction

<span>
  {"Delete a reaction the current user has made for the message"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The id of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The id of the message"}
      </span>
    </ResponseField>

    <ResponseField name="emoji" type="string" required>
      <span>
        {"Can be either the actual emoji or its id"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Delete Role

<span>
  {"Delete a role from a guild"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="roleId" type="string" required>
      <span>
        {"The ID of the role to delete"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for deleting the role (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### End Poll

<span>
  {"Immediately end a poll in a channel"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel containing the poll"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message containing the poll"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message with the ended poll"}
      </span>
    </ResponseField>

    <ResponseField name="poll" type="object | null" required />
  </Expandable>
</ResponseField>

### Get Channel Pins

<span>
  {"Returns all pinned messages in the channel."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel to retrieve pinned messages for"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="messages" type="array" required>
      <Expandable title="array item properties">
        <ResponseField name="id" type="string" required>
          <span>
            {"Message ID"}
          </span>
        </ResponseField>

        <ResponseField name="channelId" type="string" required>
          <span>
            {"Channel ID"}
          </span>
        </ResponseField>

        <ResponseField name="guildId" type="string | null" />

        <ResponseField name="author" type="object" required>
          <Expandable>
            <ResponseField name="id" type="string" required>
              <span>
                {"User ID"}
              </span>
            </ResponseField>

            <ResponseField name="username" type="string" required>
              <span>
                {"Username"}
              </span>
            </ResponseField>

            <ResponseField name="discriminator" type="string" required>
              <span>
                {"User discriminator"}
              </span>
            </ResponseField>

            <ResponseField name="globalName" type="string | null" />

            <ResponseField name="avatar" type="string | null" />

            <ResponseField name="bot" type="boolean">
              <span>
                {"Whether the user is a bot"}
              </span>
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="content" type="string | null" />

        <ResponseField name="timestamp" type="string" required>
          <span>
            {"When the message was sent (ISO8601)"}
          </span>
        </ResponseField>

        <ResponseField name="type" type="number" required>
          <span>
            {"Type of message"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get Guild

<span>
  {"Returns the guild object for the given ID"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild to retrieve"}
      </span>
    </ResponseField>

    <ResponseField name="withCounts" type="boolean" default={false}>
      <span>
        {"When true, will return approximate member and presence counts for the guild"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"Guild ID"}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Guild name"}
      </span>
    </ResponseField>

    <ResponseField name="icon" type="string | null" required />

    <ResponseField name="description" type="string | null" required />

    <ResponseField name="splash" type="string | null" required />

    <ResponseField name="discoverySplash" type="string | null" required />

    <ResponseField name="features" type="array" required>
      <span>
        {"Enabled guild features"}
      </span>
    </ResponseField>

    <ResponseField name="banner" type="string | null" required />

    <ResponseField name="ownerId" type="string" required>
      <span>
        {"ID of the guild owner"}
      </span>
    </ResponseField>

    <ResponseField name="region" type="string | null" />

    <ResponseField name="afkChannelId" type="string | null" required />

    <ResponseField name="afkTimeout" type="number" required>
      <span>
        {"AFK timeout in seconds"}
      </span>
    </ResponseField>

    <ResponseField name="verificationLevel" type="number" required>
      <span>
        {"Verification level required for the guild"}
      </span>
    </ResponseField>

    <ResponseField name="defaultMessageNotifications" type="number" required>
      <span>
        {"Default message notification level"}
      </span>
    </ResponseField>

    <ResponseField name="mfaLevel" type="number" required>
      <span>
        {"Required MFA level for the guild"}
      </span>
    </ResponseField>

    <ResponseField name="explicitContentFilter" type="number" required>
      <span>
        {"Explicit content filter level"}
      </span>
    </ResponseField>

    <ResponseField name="maxPresences" type="number | null" />

    <ResponseField name="maxMembers" type="number">
      <span>
        {"Maximum number of members"}
      </span>
    </ResponseField>

    <ResponseField name="vanityUrlCode" type="string | null" required />

    <ResponseField name="premiumTier" type="number" required>
      <span>
        {"Premium tier (Server Boost level)"}
      </span>
    </ResponseField>

    <ResponseField name="premiumSubscriptionCount" type="number">
      <span>
        {"Number of boosts"}
      </span>
    </ResponseField>

    <ResponseField name="systemChannelId" type="string | null" required />

    <ResponseField name="systemChannelFlags" type="number" required>
      <span>
        {"System channel flags"}
      </span>
    </ResponseField>

    <ResponseField name="rulesChannelId" type="string | null" required />

    <ResponseField name="publicUpdatesChannelId" type="string | null" required />

    <ResponseField name="safetyAlertsChannelId" type="string | null" />

    <ResponseField name="preferredLocale" type="string" required>
      <span>
        {"Preferred locale"}
      </span>
    </ResponseField>

    <ResponseField name="approximateMemberCount" type="number">
      <span>
        {"Approximate number of members (only present when withCounts is true)"}
      </span>
    </ResponseField>

    <ResponseField name="approximatePresenceCount" type="number">
      <span>
        {"Approximate number of online members (only present when withCounts is true)"}
      </span>
    </ResponseField>

    <ResponseField name="roles" type="array" required>
      <Expandable title="array item properties">
        <ResponseField name="id" type="string" required>
          <span>
            {"The role ID"}
          </span>
        </ResponseField>

        <ResponseField name="name" type="string" required>
          <span>
            {"The role's name"}
          </span>
        </ResponseField>

        <ResponseField name="color" type="number" required>
          <span>
            {"RGB color value of the role"}
          </span>
        </ResponseField>

        <ResponseField name="hoist" type="boolean" required>
          <span>
            {"Whether the role is displayed separately in the sidebar"}
          </span>
        </ResponseField>

        <ResponseField name="position" type="number" required>
          <span>
            {"The role's position in the hierarchy"}
          </span>
        </ResponseField>

        <ResponseField name="permissions" type="string" required>
          <span>
            {"Bitwise permissions value of the role"}
          </span>
        </ResponseField>

        <ResponseField name="mentionable" type="boolean" required>
          <span>
            {"Whether the role can be mentioned"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get Guild Channels

<span>
  {"Returns a list of guild channel objects. Does not include threads."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild to retrieve channels for"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="channels" type="array" required>
      <Expandable title="array item properties">
        <ResponseField name="id" type="string" required>
          <span>
            {"Channel ID"}
          </span>
        </ResponseField>

        <ResponseField name="type" type="number" required>
          <span>
            {"Channel type"}
          </span>
        </ResponseField>

        <ResponseField name="name" type="string">
          <span>
            {"Channel name"}
          </span>
        </ResponseField>

        <ResponseField name="position" type="number">
          <span>
            {"Sorting position of the channel"}
          </span>
        </ResponseField>

        <ResponseField name="parentId" type="string | null" />

        <ResponseField name="topic" type="string | null" />

        <ResponseField name="nsfw" type="boolean">
          <span>
            {"Whether the channel is NSFW"}
          </span>
        </ResponseField>

        <ResponseField name="lastMessageId" type="string | null" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get Guild Member

<span>
  {"Returns a guild member object for the specified user."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user to retrieve"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="user" type="object" required>
      <Expandable>
        <ResponseField name="id" type="string" required>
          <span>
            {"User ID"}
          </span>
        </ResponseField>

        <ResponseField name="username" type="string" required>
          <span>
            {"Username"}
          </span>
        </ResponseField>

        <ResponseField name="discriminator" type="string" required>
          <span>
            {"User discriminator"}
          </span>
        </ResponseField>

        <ResponseField name="globalName" type="string | null" />

        <ResponseField name="avatar" type="string | null" />

        <ResponseField name="bot" type="boolean">
          <span>
            {"Whether the user is a bot"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nick" type="string | null" />

    <ResponseField name="avatar" type="string | null" />

    <ResponseField name="roles" type="array" required>
      <span>
        {"Array of role IDs"}
      </span>
    </ResponseField>

    <ResponseField name="joinedAt" type="string" required>
      <span>
        {"When the user joined the guild (ISO8601)"}
      </span>
    </ResponseField>

    <ResponseField name="deaf" type="boolean" required>
      <span>
        {"Whether the user is deafened in voice channels"}
      </span>
    </ResponseField>

    <ResponseField name="mute" type="boolean" required>
      <span>
        {"Whether the user is muted in voice channels"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### getOrCreateChannelConversation

<span>
  {"Gets or Creates a botpress conversation from a discord channel"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="conversation" type="object" required>
      <Expandable>
        <ResponseField name="channelType" type="enum<string>" required>
          <span>
            {"The type of the discord channel"}
          </span>

          Available options: `dm`, `guildText`, `guildAnnouncement`, `announcementThread`, `publicThread`, `privateThread`
        </ResponseField>

        <ResponseField name="channelId" type="string" required>
          <span>
            {"The discord channel id"}
          </span>
        </ResponseField>

        <ResponseField name="channelTitle" type="string" required>
          <span>
            {"The discord channel title"}
          </span>
        </ResponseField>

        <ResponseField name="guildId" type="string">
          <span>
            {"The discord guild the channel is in"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="conversationId" type="string" required>
      <span>
        {"The Botpress ID of the created conversation"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get or Create a User

<span>
  {"Proactively create a user from a bot"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="name" type="string">
      <span>
        {"The name of the user"}
      </span>
    </ResponseField>

    <ResponseField name="pictureUrl" type="string">
      <span>
        {"The URL of the user profile picture"}
      </span>
    </ResponseField>

    <ResponseField name="email" type="string">
      <span>
        {"The email of the user"}
      </span>
    </ResponseField>

    <ResponseField name="user" type="object" required>
      <Expandable>
        <ResponseField name="id" type="string" required>
          <span>
            {"The Discord user ID"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="userId" type="string" required>
      <span>
        {"The Botpress ID of the created user"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### List Guild Members

<span>
  {"Returns a list of guild member objects that are members of the guild."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild to retrieve members for"}
      </span>
    </ResponseField>

    <ResponseField name="limit" type="number">
      <span>
        {"Max number of members to return (1-1000), default 1"}
      </span>
    </ResponseField>

    <ResponseField name="after" type="string">
      <span>
        {"The highest user id in the previous page, default \"0\""}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="members" type="array" required>
      <Expandable title="array item properties">
        <ResponseField name="user" type="object" required>
          <Expandable>
            <ResponseField name="id" type="string" required>
              <span>
                {"User ID"}
              </span>
            </ResponseField>

            <ResponseField name="username" type="string" required>
              <span>
                {"Username"}
              </span>
            </ResponseField>

            <ResponseField name="discriminator" type="string" required>
              <span>
                {"User discriminator"}
              </span>
            </ResponseField>

            <ResponseField name="globalName" type="string | null" />

            <ResponseField name="avatar" type="string | null" />

            <ResponseField name="bot" type="boolean">
              <span>
                {"Whether the user is a bot"}
              </span>
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="nick" type="string | null" />

        <ResponseField name="avatar" type="string | null" />

        <ResponseField name="roles" type="array" required>
          <span>
            {"Array of role IDs"}
          </span>
        </ResponseField>

        <ResponseField name="joinedAt" type="string" required>
          <span>
            {"When the user joined the guild (ISO8601)"}
          </span>
        </ResponseField>

        <ResponseField name="deaf" type="boolean" required>
          <span>
            {"Whether the user is deafened in voice channels"}
          </span>
        </ResponseField>

        <ResponseField name="mute" type="boolean" required>
          <span>
            {"Whether the user is muted in voice channels"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Pin Message

<span>
  {"Pins a message in a channel."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel containing the message"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message to pin"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Remove Member Role

<span>
  {"Remove a role from a guild member"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user"}
      </span>
    </ResponseField>

    <ResponseField name="roleId" type="string" required>
      <span>
        {"The ID of the role to remove"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for removing the role (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Unban User

<span>
  {"Remove a ban for a user from a guild"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="guildId" type="string" required>
      <span>
        {"The ID of the guild"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user to unban"}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string">
      <span>
        {"Reason for the unban (appears in audit log)"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Unpin Message

<span>
  {"Unpins a message in a channel."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="channelId" type="string" required>
      <span>
        {"The ID of the channel containing the pinned message"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message to unpin"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>
