'Autocomplete slash command appear only one admin

Description

I created slash command bot with bot, applications.commands scopes. And create slash command for guild, and command not showed so I create commands as application scope. And still not showing

I tried to kick out my bot and re enter url but not worked...

What is the solution plz! Thank you

Steps to Reproduce

const serverless = require("serverless-http");
const express = require("express");
const app = express();
const { CreateRateUseCase } = require("./core/usecase/createRateUseCase");
const nacl = require("tweetnacl");
const getRawBody = require("raw-body");
const { DiscordBot } = require("./discordBot");
// const { verifyKeyMiddleware } = require("discord-interactions");
require("dotenv").config({ path: `./.env.${process.env.NODE_ENV}` });


app.post(
  "/interactions",
  // verifyKeyMiddleware(process.env.DISCORD_PUBLIC_KEY),
  async (req, res, next) => {
    try {
      console.log(`req : `);
      console.log(req);
      console.log(`body ${req.body} ${JSON.stringify(req.body)}`);

      const rawBody = await getRawBody(req);
      console.log(`rawBody ${rawBody} ${typeof rawBody}`);

      const body = JSON.parse(rawBody);

      if (
        process.env.NODE_ENV === "dev" ||
        process.env.NODE_ENV === "production"
      ) {
        const signature = req.get("X-Signature-Ed25519");
        console.log(`signature ${signature}`);
        const timestamp = req.get("X-Signature-Timestamp");
        console.log(`timestamp ${timestamp}`);
        const isVerified = nacl.sign.detached.verify(
          Buffer.from(timestamp + rawBody),
          Buffer.from(signature, "hex"),
          Buffer.from(process.env.DISCORD_PUBLIC_KEY, "hex")
        );
        console.log(`isVerified ${isVerified}`);
        if (!isVerified) {
          console.log("Failed verification");
          return res.status(401).end("invalid request signature");
        }

        if (body.type === 1) {
          console.log("Handling validation test request");
          return res.status(200).send({ type: 1 });
        }
      }

      if (body.type === 2) {
        if (
          body.channel_id !== process.env.DISCORD_CHANNEL_ID_KOR &&
          body.channel_id !== process.env.DISCORD_CHANNEL_ID_EN
        ) {
          console.log(`channel id ${body.channel_id}`);
          console.log(
            "This command is only available in the COMMUNITY category"
          );
          res.status(200).send({
            type: 4,
            data: {
              content: `This command is only available in the 'COMMUNITY' category. 😢`,
            },
          });
          return;
        }

        const discordBot = new DiscordBot();
        const result = await discordBot.execute(body);
        console.log(`result ${JSON.stringify(result)}`);

        res.status(200).send(result);
        console.log("reply done");
      }
      return;
    } catch (e) {
      console.error(e.message);
      return res.send("Error handling verification");
    }
  }
);
  1. deploy server on aws lambda
  2. OAuth2 -> URL Generator, check bot, applications.commands and enter url then select server.
  3. check SERVER MEMBERS INTENT, MESSAGE CONTENT INTENT
  4. enter api gateway url to INTERACTIONS ENDPOINT URL as https://xyz.amazonaws.com/interactions/
  5. create slash commands
const { Client, Intents } = require("discord.js");
const client = new Client({
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES],
});
console.log(`NODE_ENV ${process.env.NODE_ENV}`);
require("dotenv").config({ path: `./.env.${process.env.NODE_ENV}` });

const korCommandList = {
  ㅅㅇㄹ: {
    description: "예치 수익률 응답",
  },
  수익률: {
    description: "예치 수익률 응답",
  },
  예치수익률: {
    description: "예치 수익률 응답",
  },
};
const enCommandList = {
  depositapy: {
    description: "response deposit yield",
  },
  yield: {
    description: "response deposit yield",
  },
  apy: {
    description: "response deposit yield",
  },
  deposityield: {
    description: "response deposit yield",
  },
};

client.on("ready", async () => {
  const promises = [];
  const objs = Object.assign(korCommandList, enCommandList);
  console.log(
    `process.env.DISCORD_BOT_CLIENT_ID ${process.env.DISCORD_BOT_CLIENT_ID}`
  );
  console.log(`process.env.DISCORD_GUILD_ID ${process.env.DISCORD_GUILD_ID}`);
  for (const key in objs) {
    const p = await client.api
      .applications(process.env.DISCORD_BOT_CLIENT_ID)
      // .guilds(process.env.DISCORD_GUILD_ID)
      .commands.post({
        data: {
          name: key,
          description: objs[key].description,
        },
      });
    promises.push(p);
  }
  const result = await Promise.all(promises);
  console.log(result);

  client.destroy();
});

client.login(process.env.DISCORD_BOT_TOKEN);
  1. after hours, or day type / on discord app. normal user can not see commad list, but admin can see.

Expected Behavior

Every user on server with bot can see slash command list.

Current Behavior

Admin can see slash command lists, but normal user can not see.

Screenshots/Videos

text box by server admin image

text box by server normal user, slash commands not displayed

Client and System Information

browser admin : chrome on mac image

user : discord app on mac

lib image



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source