Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Discord.JS,如何使用一个不一致的按钮来允许购买各种服务器角色

Discord.JS,如何使用一个不一致的按钮来允许购买各种服务器角色
EN

Stack Overflow用户
提问于 2021-05-31 19:14:17
回答 2查看 993关注 0票数 0

很抱歉标题写得很糟糕,我会尽我所能解释的。我正在使用新的discord button模块创建一个角色商店命令,遇到了一个问题,据我所知,我必须为每个单独的角色创建一个按钮,以便有人购买它。在搜索了文档之后,我仍然有点困惑。下面是我放在一起的一些示例代码,用来展示我想要做的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let embedRed = new Discord.MessageEmbed()
                
        .setTitle('Red Role')
        .setColor('#c46413')
        .addField('**Price**', '10,000', true)
        .addField('**Color Hex:**', '#ffffff',true)

 let embedBlue = new Discord.MessageEmbed() 
                  
          .setTitle('Blue')
          .setColor('#c2a289')
          .addField('**Price**', '10,000', true)
          .addField('**Color Hex:**', '#ffffff',true)

  ///Buttons
let buttonBuyRed = new MessageButton()
.setStyle('green')
.setLabel('Buy Red Role')
.setID('role_buy1')


let buttonBuyBlue = new MessageButton()
.setStyle('green')
.setLabel('Buy Blue Role')
.setID('role_buy2')

//embeded messages being sent
 message.channel.send({ buttons: [buttonBuyRed], embed: embedRed});
    message.channel.send({ buttons: [buttonBuyRed], embed: embedBlue});


//What happens if buttons are pressed
client.on('clickButton', async (role_buy1) => {
  if (button.id === 'roley_buy1') {
    button.channel.send(`${button.clicker.user.tag} bought red role`);
db.push(message.author.id, `${message.guild.roles.cache.get('role id here')}`) //role being pushed to user's inventory
  }
});

client.on('clickButton', async (role_buy2) => {
  if (button.id === 'role_buy2') {
    button.channel.send(`${button.clicker.user.tag} bought blue role`);
db.push(message.author.id, `${message.guild.roles.cache.get('role id here')}`) //role being pushed to user's inventory
  }
});

由于我希望用户能够购买大约25个不同的角色,为每个角色创建一个按钮是相当麻烦的,我正在寻找一种只使用一个"buy_role“按钮的方法,该按钮适用于所有可用角色。

如果我没有解释清楚,请让我知道,任何帮助都很感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-31 20:47:42

所以我得出了一个结论,这个代码可以工作,但是如果你的行会有很多角色,它会抛出一个错误"Invalid form body“

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        const rolesInGuild = message.guild.roles.cache.array(); //creating array from collection of roles in a guild
        const buttons = []; // an empty array for our buttons
        for (const role of rolesInGuild) { // creating a loop inorder to create a button for every roles in rolesInGuild Array
            const button = new MessageButton()
                .setStyle('red') // default: blurple
                .setLabel(`${role.name}`) // default: NO_LABEL_PROVIDED
                .setID(`${role.id}`);
            buttons.push(button); // button id is the same as role id so its unique!
        }
        console.log(rolesInGuild);
        console.log(buttons);
        await message.channel.send('test', { buttons: buttons }); // sending our buttons

        bot.on('clickButton', async(button) => {
            for (const btn of buttons) {
                if (btn.custom_id == button.id) {
                    const role = button.guild.roles.cache.get(btn.custom_id);
                    const member = message.guild.members.cache.get(button.clicker.user.id);
                    member.roles.add(role);
                }
            }
        });

您可以将特定角色添加到{ rolesInGuild:'rolename',id:'roleid‘}格式的数组角色中,而不是添加到公会中的每个角色(我不确定您的目标是什么)

票数 1
EN

Stack Overflow用户

发布于 2021-05-31 19:55:36

你有${message.guild...},如果你有一个错误,这是错误的,所以试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  if (button.id === 'roley_buy1') {
    button.channel.send(`${button.clicker.user.tag} bought red role`);
    db.push(message.author.id, `${button.guild.roles.cache.get('role id here')}`) //role 
    being pushed to user's inventory
    button.clicker.roles.add('your role id');
    // or you can find the role using
    const role = button.guild.roles.cache.find(role => role.name == 'rolename');
    button.clicker.roles.add(role);
  }
});```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67779187

复制
相关文章
如何购买服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
用户5048372
2022/09/19
14.2K0
如何在Chef中使用角色和环境来控制服务器配置
在构建基础架构时,管理多服务器,服务,用户和应用程序可能会很快变得很难。配置管理系统可用于帮助您管理这种混乱。
丰一川
2018/08/07
1.4K0
如何购买云服务器 服务器购买平台怎么找
从事互联网工作的小伙伴应该都知道,网站除了需要程序外,还需要域名跟空间。空间也可以用云服务器,如果搭建的网站较大,可以考虑使用云服务器,尤其是对大企业而言,空间的带宽以及绑定域名有限,不利于大门户网站的使用。那么如何购买云服务器呢?
用户8715145
2021/09/17
28.4K0
如何购买云服务器 服务器购买平台怎么找
如何购买 GPU 服务器?
GPU 云服务器支持四种镜像类型:公共镜像、自定义镜像、共享镜像、镜像市场。具体详情请单击 了解镜像 >>。 对于刚开始使用腾讯云的用户,可选择【公共镜像】,并根据需要挑选版本。
用户5915919
2019/09/16
13.6K0
如何购买 GPU 服务器?
如何购买 AMD GPU 服务器?
GPU 渲染型 GA2 支持四种镜像类型:公共镜像、自定义镜像、共享镜像、服务市场。
用户5915189
2019/09/13
11.6K0
如何购买 AMD GPU 服务器?
学生服务器如何购买?
腾讯云学生服务器适用于建站、学习等轻量级web应用场景,主要是为了帮助想从事计算机行业的学生入门云计算,获得更多的实践经验,那学生服务器如何购买呢? 腾讯云学生服务器地址 https://cloud.
return null
2019/09/02
10.8K0
如何购买腾讯云服务器
从实践案例出发,描述如何购买腾讯云的服务器。云服务器(Cloud Virtual Machine)是一种专业的高性能高稳定的弹性伸缩的计算服务,您可以在几分钟内轻松获取并配置您的CVM计算实例。
腾讯云开发者社区
2016/10/20
117.1K4
如何购买腾讯云服务器
购买服务器之后如何找到服务器
4.点击自己云服务器的实例id后,就可以看见服务器的基本信息、弹性网卡、安全组等等。
深蓝.
2021/10/03
8K0
如何购买服务器和域名?是先购买域名还是先买服务器?
网站在建设完成后,就需要通过域名建立和互联网的联系,而对于很多普通个人主页而言,网站的存储空间可以通过购买网络服务器来获得,但对于一些企业网站而言,大多会自行购置网络服务器来解决网站的储存问题,那么如何购买服务器和域名?是先买域名还是先买服务器呢?
用户8715145
2021/08/19
16.8K0
购买云服务器后如何使用 挑选云服务器应该注意什么
随着互联网科技的快速发展,很多个人用户也想创建自己的博客和网站。但是要想搭建自己的互联网平台,必须去购买服务器和域名,这两点缺一不可,那么很多人却不知道购买云服务器后如何使用,同时也不知道在云服务器挑选的时候应该注意哪些。
用户8715145
2021/08/27
5K0
购买云服务器后如何做?如何才能够更好的使用它?
云服务器的出现可以帮助人们进行彼此沟通,同时也可以为人们的事业发展保驾护航,只是作为新手,虽然已经购买了云服务器,但是关于购买云服务器后如何做这个问题却仍旧一头雾水,不知道应当如何使用它。
用户8715145
2021/09/10
2.1K0
购买云服务器后如何使用?使用过程会产生花销吗?
关于云服务器人们早已耳熟能详,许多企业为了能够更好的进行交流和操作,所以早已经购买了云服务器。购买云服务器后如何使用?其实只要了解基本流程,自然能够正常使用。购买云服务器后如何使用?
用户8715145
2021/09/10
4.4K0
基于角色的菜单按钮权限的设计及实现
          思路:sql语句加上对应的where条件 ,来对查询到的所有数据做进一步的筛选。
明志德道
2023/10/20
7210
基于角色的菜单按钮权限的设计及实现
各种语言按钮事件特征码
比如:弹提示框,就下MessageBoxA,注册表的,就下RegOpenKeyA等等
阿珏
2018/08/08
2.1K0
如何购买域名和服务器?服务器的用途是什么?
个人在互联网上建立网站,在现代社会已经是一件非常常见的事情。如果网站的内容精彩而有趣,还很有可能为网站的主人吸引大量的流量,金钱利益也就会随之而来。那么如何购买域名和服务器?服务器的用途是什么呢?
用户8739990
2021/08/13
3.2K0
如何购买腾讯云服务器?『新手小白教程』
腾讯云产品系列有云服务器、云硬盘、云数据库、CDN、云存储等等产品,其中腾讯云服务器,因为用途比较广泛,比如用来运行量化交易系统、跑自动化交易程序、搭建跑外汇MT4/MT5 EA的服务器以及网站建设等等,所以成为众多用户喜爱的选择。 由于很多用户之前没有购买过云服务器,对于有些不熟悉云服务器的新用户可能需要一点指导,所以本文将详细介绍腾讯云服务器的购买过程,并且提供一些优惠购买信息与通道,帮助大家购买适合自己业务需求的高性价比云服务器。
用户2416682
2019/07/24
9.8K0
如何购买腾讯云服务器?『新手小白教程』
Flask学习「一」(按钮,角色,菜单,用户,权限)
很荣幸有时间能静下心来写在这篇文章,前段时间写了一些没有营养的文章对那些关注我的同学来说非常抱歉,接下来的一段日子里会围绕近期所做的Flask项目写一系列的博客,以记录自己的不足。 鉴于可能有些小白可能会看到这篇文章,于是我尽量写的通俗易懂。 接下来进入正题,我这篇文章要写的是一个系统的权限部分。权限的控制对于一个优秀的系统来说至关重要,但是对于权限的设计和把空是比较麻烦的。 一般如果我们不考虑按钮的话,逻辑大致如下: 把菜单和权限、权限用户关联起来。 1、用户页面,可以增删改查,并且还要有一个分配权限的按钮。 2、权限页面,可以增删改查,并且有一个分配用户的按钮和一个分配菜单的按钮。 3、建立两个表,分别为用户权限表(保存用户ID和权限ID)、权限菜单表(保存权限ID和菜单ID)。 4、当在用户页面中选中一个用户,点击用户的“分配权限”按钮时,打开展示所有权限的页面(并把用户ID传进去),左边展示所有还没有分配的权限列表,右边展现已经分配的权限列表,然后选择需要分配的左边权限后,点击分配,把数据分配到右边已分配的列表中,然后点击“确定”按钮,把用户ID和选择的权限ID保存到用户权限表。 5、当在权限页面选中一个权限,并点击“分配用户”时,处理方式和4相同,当选择需要分配权限的用户后,同样把用户ID和权限ID保存到用户权限表。 6、当在权限页面选中一个权限,并点击“分配菜单”时,打开一个树展现所有菜单的页面,每个树节点前面有一个复选框,并把这个权限已经分配的树默认选中,然后在要分配的菜单节点树前面的复选框上选中,最后保存数据,把权限Id和所有选中的菜单ID保存到权限菜单表。 7、当用户登陆系统的时候,首先检查用户输入的口令信息,如果口令正确,再根据用户倒查用户权限表,再通过用户权限表查到的权限,到权限菜单表查询相应的菜单,再把相应的菜单展示出来。 上面便是不考虑按钮的情况下的业务逻辑,其实加上按钮的话也是差不多的,因为按钮隶属于菜单,只有给某个用户分配了某个角色,这个用户才能在登录的时候看到他所拥有角色对应下的菜单和按钮,这样即完成了角色的权限控制。 接下来开始我们的项目。 首先根据上面的业务描述,我们大概可以用到的表和字段如下:
Python之道
2020/04/24
1.4K0
公司网站建设选什么服务器 如何购买服务器
现在很多企业为了不被互联网淘汰,开始跟上互联网的脚步,纷纷开始搭建属于企业自己的网站。而搭建网站并非想象中那么容易,除了要掌握对前端页面的代码了解之外,后端数据库创建也要懂,因此网站建设还是有一定的难度。下面先给大家介绍公司网站建设选什么服务器。
用户8715145
2021/12/11
4.1K0
腾讯云服务器如何购买?(图文教程)
国内的云服务器上知名的就那么几家,腾讯云是排名前列的云服务器提供商。而且腾讯云是国内互联网龙头企业,信得过,它们的产品是值得信任的。好了,废话不多说,我现在教下新手怎样选择和购买腾讯云服务器。这篇教程我写的很详细,因为有些个人建议和忠告,帮助你不要选错。
聚优云惠
2019/07/29
6.4K0
【玩转 GPU】在腾讯云购买一个海外服务器来实现反向代理服务
大家都知道目前ChatGPT在国内还没有引进,如何更便捷地使用ChatGPT,这里就不得不用到海外的服务器了,可以在腾讯云里选择一台海外的服务器,腾讯云的海外服务器收费比较灵活,对于小微企业或者个人来说,可以选择按量付费或者包月模式来减少成本。
用户2003544
2023/07/06
2.1K1
【玩转 GPU】在腾讯云购买一个海外服务器来实现反向代理服务

相似问题

Discord.JS -使用角色使用户与VC不一致

13

编辑不一致的角色权限。(discord.js)

00

如何使用discord.js创建角色

23

Discord.js -使用角色ID Ping角色

435

如何允许IAM角色通过cloudformation来承担另一个IAM角色?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文