typescript - วิธีตรวจสอบสิทธิ์จากการโต้ตอบใน discord.js
ฉันต้องการความช่วยเหลือในการเข้าใจวิธีเขียนสิ่งนี้ใน TypeScript ฉันลองทำใน JavaScript แล้วมันใช้ได้
(ส่งค่ากลับเป็น true หรือ false ว่าผู้ใช้ที่ทำการโต้ตอบนั้นมีสิทธิ์ผู้ดูแลระบบหรือไม่)
execute(client, interaction) {
console.log(interaction.member?.permissions.has("ADMINISTRATOR"));
}
ความพยายามของฉันในไทป์สคริปต์:
execute(client: MyClient, interaction: CommandInteraction) {
console.log(interaction.member?.permissions.has("ADMINISTRATOR"));
},
Typescript มีข้อผิดพลาดที่ .has:
Property 'has' does not exist on type 'string | Readonly<Permissions>'.
Property 'has' does not exist on type 'string'.
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร?
คำตอบ #1
ลองแปลง interaction.member เป็น GuildMember
// Namespace
import { GuildMember } from "discord.js";
execute(client: MyClient, interaction: CommandInteraction) {
const member = interaction.member as GuildMember;
console.log(member.permissions.has("ADMINISTRATOR"));
},
คำตอบ #2
นี่เป็นเพราะ CommandInteraction.member เป็น ?GuildMember | ?APIGuildMember หากคุณคลิกที่ลิงก์ APIGuildMember คุณจะเห็นว่า permissions เป็นประเภทสตริง ผมไม่ค่อยคุ้นเคยกับ TS แต่ผมคิดว่านี่เป็นวิธีแก้ปัญหา
execute(client: MyClient, interaction: CommandInteraction) {
const member = interaction.member as GuildMember
console.log(member?.permissions.has("ADMINISTRATOR"));
}
