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.

create dynamic `/bluesky` banner

Luna 5b4811ee d791f16d

+64 -33
+29 -22
app/(dynamic-assets)/bluesky-client-metadata.json/route.ts
··· 3 3 export const revalidate = 691200; // 8 days 4 4 5 5 export function GET() { 6 - return Response.json({ 7 - client_id: getCanonicalUrl("bluesky-client-metadata.json"), 8 - client_name: "Wamellow", 9 - client_uri: getBaseUrl(), 10 - logo_uri: getCanonicalUrl("waya-v3.webp"), 11 - tos_uri: getCanonicalUrl("terms"), 12 - policy_uri: getCanonicalUrl("privacy"), 13 - redirect_uris: [ 14 - getCanonicalUrl("login", "bluesky") 15 - ], 16 - scope: "atproto transition:generic", 17 - grant_types: [ 18 - "authorization_code", 19 - "refresh_token" 20 - ], 21 - response_types: [ 22 - "code" 23 - ], 24 - token_endpoint_auth_method: "none", 25 - application_type: "web", 26 - dpop_bound_access_tokens: true 27 - }); 6 + return Response.json( 7 + { 8 + client_id: getCanonicalUrl("bluesky-client-metadata.json"), 9 + client_name: "Wamellow", 10 + client_uri: getBaseUrl(), 11 + logo_uri: getCanonicalUrl("waya-v3.webp"), 12 + tos_uri: getCanonicalUrl("terms"), 13 + policy_uri: getCanonicalUrl("privacy"), 14 + redirect_uris: [ 15 + getCanonicalUrl("login", "bluesky") 16 + ], 17 + scope: "atproto transition:generic", 18 + grant_types: [ 19 + "authorization_code", 20 + "refresh_token" 21 + ], 22 + response_types: [ 23 + "code" 24 + ], 25 + token_endpoint_auth_method: "none", 26 + application_type: "web", 27 + dpop_bound_access_tokens: true 28 + }, 29 + { 30 + headers: { 31 + "Cache-Control": "public, s-maxage=691200, immutable" 32 + } 33 + } 34 + ); 28 35 }
+11
app/(dynamic-assets)/bluesky/route.ts
··· 1 + import { redirect } from "next/navigation"; 2 + 3 + export const revalidate = 691200; // 8 days 4 + 5 + export function GET(request: Request) { 6 + if (!request.headers.get("user-agent")?.includes("Discordbot/2.0")) { 7 + redirect("https://www.reddit.com/r/BlueskySocial/comments/1jbjmc4/like_bluesky_posts_inside_of_discord_with_wamellow/"); 8 + } 9 + 10 + redirect("/wamellow-bluesky-like.webp"); 11 + }
+12 -4
app/(dynamic-assets)/luna.webp/route.ts
··· 2 2 3 3 export const revalidate = 691200; // 8 days 4 4 5 - export async function GET(request: Request) { 5 + export async function GET() { 6 6 const user = await getUser("821472922140803112"); 7 7 8 - request.headers.set("Cache-Control", "public, s-maxage=691200, immutable"); 9 - 10 - return await fetch(user?.avatarUrl 8 + const avatar = await fetch(user?.avatarUrl 11 9 ? user.avatarUrl + "?size=256" 12 10 : "https://cdn.discordapp.com/embed/avatars/5.png" 11 + ) 12 + .then((r) => r.arrayBuffer()); 13 + 14 + return new Response( 15 + avatar, 16 + { 17 + headers: { 18 + "Cache-Control": "public, s-maxage=691200, immutable" 19 + } 20 + } 13 21 ); 14 22 }
+12 -4
app/(dynamic-assets)/waya-v3.webp/route.ts
··· 2 2 3 3 export const revalidate = 691200; // 8 days 4 4 5 - export async function GET(request: Request) { 5 + export async function GET() { 6 6 const user = await getUser(process.env.CLIENT_ID as string); 7 7 8 - request.headers.set("Cache-Control", "public, s-maxage=691200, immutable"); 9 - 10 - return await fetch(user?.avatarUrl 8 + const avatar = await fetch(user?.avatarUrl 11 9 ? user.avatarUrl + "?size=256" 12 10 : "https://cdn.discordapp.com/embed/avatars/5.png" 11 + ) 12 + .then((r) => r.arrayBuffer()); 13 + 14 + return new Response( 15 + avatar, 16 + { 17 + headers: { 18 + "Cache-Control": "public, s-maxage=691200, immutable" 19 + } 20 + } 13 21 ); 14 22 }
-3
app/provider.tsx
··· 31 31 } 32 32 ); 33 33 34 - const params = new URLSearchParams(window.location.search); 35 - if (params.get("spotify_login_success") === "true" && path !== "/login/spotify") window.close(); 36 - 37 34 if (!path.startsWith("/dashboard/")) guildStore.setState(undefined); 38 35 }, [path]); 39 36
public/wamellow-bluesky-like.webp

This is a binary file and will not be displayed.