Token-gate Discord and Telegram on Arbitrum

Gate a Discord or Telegram group on Arbitrum One for token or NFT holders, ARB delegates, DeFi depositors and protocol users.

To token-gate a Discord server or Telegram group for holders of a token or NFT on Arbitrum, create a role in Guild, add a Token balance or NFT Balance requirement with Arbitrum One as the chain, and give the role a Discord or Telegram reward. Members connect their wallets, Guild gives the Discord role or the group invite to everyone who holds enough, and takes it away when they sell. On Arbitrum you can also gate on ARB voting power, DeFi positions and protocol usage, because Guild can call any read function of an Arbitrum contract. Discord and Telegram gating are on the Free plan.

On Guild, 15.1% of active guilds with a chain requirement check Arbitrum, and those guilds hold 1.26 million memberships. See State of token-gated communities 2026.

Arbitrum One, not Nova

Guild supports Arbitrum One, chain ID 42161, where ETH pays for gas. Arbitrum Nova (chain ID 42170) is a separate chain and isn't in Guild's chain list, so tokens that live only on Nova can't be gated. When a project quotes an "Arbitrum" address, check on Arbiscan that it is the Arbitrum One contract.

What Guild can check on Arbitrum One

You want members who Requirement On Arbitrum One
Hold ETH Token balance, Native currency balance Yes
Hold an ERC-20 token Token balance, ERC20 balance Yes
Hold an NFT NFT Balance Yes
Pass a check your contract answers Contract query Yes
Have an old or active wallet, or use a protocol Onchain activity Yes
Have an EAS attestation Be attested by Yes
Held a token at a snapshot, or for N days Held at a past block, Held continuously for No: Ethereum and Base only

You can also mint an NFT reward on Arbitrum One. Supported chains has the full table.

Set up the gate

  1. On your guild, choose Manage guild, open Spaces & roles, and create a role with New role, then Empty role.
  2. Under Who gets it, press Requirement, pick Token balance or NFT Balance, choose Arbitrum One, paste the contract address and set the amount.
  3. Under Unlocks, press Add reward and pick Discord or Telegram.

The full walkthrough, including the bot's role order in Discord and making a Telegram group private, is in Token-gate a Discord server and Token-gate a Telegram group.

ARB holders and delegates

ARB, the Arbitrum DAO's governance token, is minted on Arbitrum One. The Arbitrum Foundation lists its contract there as 0x912CE59144191C1204E64559FE8253a0e49E6548.

  • ARB holders: Token balance, ERC20 balance, that address, at least the amount you choose, entered as a wallet shows it.
  • Delegates with voting power: ARB voting power comes from delegation, and the token answers getVotes(address) with an address's current votes. Add a Contract query on Arbitrum One with the ARB address, the method getVotes(address), USER_ADDRESS in Input parameters, and under Output to check a bigint at least your threshold. A Contract query returns raw units, and ARB has 18 decimals, so 1,000 votes is 1000000000000000000000.

A holder who has never delegated, even to themselves, has zero votes, so use the balance check for "holders" and getVotes for "people who take part in governance".

USDC or USDC.e

Arbitrum One has two USDC tokens at different addresses. Arbitrum's docs list:

Token Address
USDC, issued natively by Circle 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
USDC.e, bridged from Ethereum 0xff970a61a04b1ca14834a43f5de4533ebddb5cc8

A Token balance requirement checks one contract. To accept either, add both and set Members should meet to Any one.

DeFi positions and protocol users

Much of what Arbitrum users hold sits in protocols rather than in their wallets: deposits, staked tokens, vault shares. A Contract query reads them:

  • Stakers: balanceOf(address) on your staking contract with USER_ADDRESS, bigint greater than 0.
  • Pool depositors: userInfo(uint256,address) with [0, "USER_ADDRESS"], output index 0, greater than 0.
  • Registered users: a function such as isRegistered(address), boolean equals true.

If the vault issues an ERC-20 share token, a plain Token balance on the share token works too. To reward use rather than deposits, add Onchain activity, Contract call on your contract and method, at least 5 in a Relative period of 30 days. See Wallet activity.

No holding history on Arbitrum

Held at a past block and Held continuously for read past chain state, which only a full archive of the chain can answer. Guild runs its own archive nodes for Ethereum and Base only, so it doesn't offer them on Arbitrum One. Two ways to get close:

  • For a one-off snapshot, export the holders at your block with your own tooling and upload the wallets as an Allowlist.
  • To favour people who aren't fresh, add Onchain activity, First transaction on Arbitrum One before a date.

Worked example: Arbitrum delegates

A DAO-adjacent project wants a Telegram group for ARB delegates who are active on Arbitrum, and a Discord role for holders of its own token.

Role 1, "Delegates", for the Telegram group:

  1. Contract query, Arbitrum One, the ARB address, getVotes(address), ["USER_ADDRESS"], bigint at least 1000000000000000000000 (1,000 ARB).
  2. Onchain activity, Transaction count, Arbitrum One, at least 20 in a Relative period of 90 days.
  3. Members should meet: All.
  4. Reward: Telegram, with the bot added to the private group.

Role 2, "Holders", for a Discord role:

  1. Token balance, ERC20 balance, Arbitrum One, the project's token, at least 500.
  2. Reward: Discord, New role named "Holders", Keep role once earned off.

A delegate whose delegators move their votes away drops below 1,000 and is removed from the group when Guild next checks.

FAQ

Is token-gating on Arbitrum free?

Yes. Token, NFT, contract query, onchain activity and attestation requirements, and Discord and Telegram rewards, are on the Free plan. See Plans.

Can holding ARB on Ethereum count?

Only if you add it. Each requirement checks one contract on one chain. The Arbitrum Foundation lists a bridged ARB on Ethereum at 0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1: add a Token balance on Ethereum with that address and set Members should meet to Any one. Bridged ARB isn't counted by the getVotes query on Arbitrum One.

Why can't I pick Arbitrum for "held for 90 days"?

Guild offers holding history only on chains it runs a full archive node for, today Ethereum and Base. It doesn't answer those checks from a provider that may have pruned the history.

My contract isn't verified on Arbiscan. Can I still query it?

Yes. If Guild can't load its read functions, type the function's signature by hand, for example userInfo(uint256,address)(uint256,uint256).

All Guild docs