The weeb for the next gen discord boat - Wamellow wamellow.com
bot discord
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

add top lb roles

Luna b84a0618 6cfda97a

+45 -11
+37 -8
app/dashboard/[guildId]/leaderboards/page.tsx
··· 135 135 defaultState={leaderboard.banner || ""} 136 136 /> 137 137 138 - <div className="lg:flex gap-3"> 138 + <hr className="mt-6 mb-2 dark:border-wamellow-light border-wamellow-100-light" /> 139 + <span className="dark:text-neutral-500 text-neutral-400 text-sm">Select top 1. role first, then 2. and last 3. (left 1st, right 3rd)</span> 140 + 141 + <div className="lg:flex gap-3 mt-5"> 142 + <div className="lg:w-1/2"> 143 + <MultiSelectMenu 144 + name="Top messager roles" 145 + url={`/guilds/${guild?.id}/modules/leaderboard`} 146 + dataName="roles.messages" 147 + items={guild?.roles?.sort((a, b) => b.position - a.position).map((r) => ({ name: `@${r.name}`, value: r.id, error: r.missingPermissions.join(", "), color: r.color }))} 148 + description="Select roles which should be assigned to the top message members." 149 + defaultState={leaderboard?.roles?.messages || []} 150 + max={3} 151 + /> 152 + </div> 139 153 <div className="lg:w-1/2"> 140 154 <MultiSelectMenu 141 - name="Blacklisted Channels" 155 + name="Top voice roles" 142 156 url={`/guilds/${guild?.id}/modules/leaderboard`} 143 - dataName="blacklistChannelIds" 144 - items={guild?.channels?.sort((a, b) => a.name.localeCompare(b.name)).map((c) => { return { name: `#${c.name}`, value: c.id }; })} 145 - description="Select channels which should not be able to be counted." 146 - defaultState={leaderboard?.blacklistChannelIds || []} 147 - max={500} 157 + dataName="roles.voiceminutes" 158 + items={guild?.roles?.sort((a, b) => b.position - a.position).map((r) => ({ name: `@${r.name}`, value: r.id, error: r.missingPermissions.join(", "), color: r.color }))} 159 + description="Select roles which should be assigned to the top voice members." 160 + defaultState={leaderboard?.roles?.voiceminutes || []} 161 + max={3} 148 162 /> 149 163 </div> 150 164 </div> 151 165 152 166 <hr className="my-6 dark:border-wamellow-light border-wamellow-100-light" /> 153 167 154 - <div className="w-full grid gap-4 md:flex md:gap-0 md:items-center"> 168 + <div className="lg:w-1/2"> 169 + <MultiSelectMenu 170 + name="Blacklisted channels" 171 + url={`/guilds/${guild?.id}/modules/leaderboard`} 172 + dataName="blacklistChannelIds" 173 + items={guild?.channels?.sort((a, b) => a.name.localeCompare(b.name)).map((c) => ({ name: `#${c.name}`, value: c.id }))} 174 + description="Select channels which should not be able to be counted." 175 + defaultState={leaderboard?.blacklistChannelIds || []} 176 + max={500} 177 + /> 178 + </div> 179 + 180 + <hr className="mt-6 mb-2 dark:border-wamellow-light border-wamellow-100-light" /> 181 + <span className="dark:text-neutral-500 text-neutral-400 text-sm">Leaderboards update roughtly all 20 minutes</span> 182 + 183 + <div className="w-full grid gap-4 md:flex md:gap-0 md:items-center mt-5"> 155 184 <UpdatingLeaderboardCard guild={guild as Guild} lb={leaderboard.updating.find((lb) => lb.type === "messages")} type="messages" /> 156 185 <Betweener /> 157 186 <UpdatingLeaderboardCard guild={guild as Guild} lb={leaderboard.updating.find((lb) => lb.type === "voiceminutes")} type="voiceminutes" />
+8 -3
typings.ts
··· 207 207 208 208 export interface ApiV1GuildsModulesLeaderboardGetResponse { 209 209 banner: string | null; 210 - emoji: string | null; 211 210 212 211 backgroundColor: number | null; 213 212 textColor: number | null; 214 213 accentColor: number | null; 215 214 216 - blacklistChannelIds: string[] 215 + blacklistChannelIds: string[]; 216 + 217 + roles: { 218 + messages: string[]; 219 + voiceminutes: string[]; 220 + // invites: string[]; // again'st tos 221 + } | undefined; 217 222 218 - updating: ApiV1GuildsModulesLeaderboardUpdatingPostResponse[] 223 + updating: ApiV1GuildsModulesLeaderboardUpdatingPostResponse[]; 219 224 } 220 225 221 226 export interface ApiV1GuildsModulesPassportGetResponse {