标签: discord

从 Python Discord 机器人中的同步线程发送消息

我正在使用 discord.py 库在 Python 3.6 中开发 Discord 机器人,并且在尝试从我创建的线程向特定通道发送消息时遇到问题。

基本上,我有一些线程监视网站,并且我想调用一个函数(我正在传递给线程),当我注意到网站上的更改时,该函数将消息发送到一个特定的频道。

我最初尝试在client.send_message()没有 async/await 的情况下直接调用但它根本不起作用,所以我编写了发送消息的 async/await 函数(测试它并且它有效)但是我再次从线程调用它时遇到问题,所以我结束了将机器人客户端传递给我的线程并调用self.bot_client.loop.create_task(self.sendmsgfunction(msg)). 这是可行的,但与机器人使用常规@bot.event功能回复消息所需的时间相比,它非常慢(发送消息大约需要 15 秒,而且这可能不是正确的发送方式)。

我已经尝试使用 asyncio 创建一个事件循环,然后调用该函数,但最终还是出现了错误。

有任何想法吗?

python multithreading python-asyncio discord discord.py

8
推荐指数
1
解决办法
1624
查看次数

如何在 Discord.js 中检查消息是否为私信?

目前我使用的是最新版本的Discord.js (v13.1.0)

我希望能够检测某条消息是否是 DM。我尝试创建一个messageCreate事件并执行 if 语句来检查该通道是否是 DM

client.on('messageCreate', message => {
   if (message.channel.type == 'DM') {
      console.log('Dm recieved!')
   }
})
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这不起作用。所以我不知道会发生什么。

这是我的intents

[Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.DIRECT_MESSAGES]

顺便说一句,该事件确实有效:

client.on('messageCreate', message => {
   console.log('Event')
}
Run Code Online (Sandbox Code Playgroud)

javascript discord discord.js

8
推荐指数
1
解决办法
7400
查看次数

不推荐为 MessageEmbed#setFooter 传递字符串

运行我的机器人代码时,我在终端中收到此警告:

(节点:6220)DeprecationWarning:不推荐为 MessageEmbed#setFooter 传递字符串。而是传递一个单独的对象。(用于node --trace-deprecation ...显示创建警告的位置)

warnings deprecated deprecation-warning discord discord.js

8
推荐指数
1
解决办法
1万
查看次数

使用discord.js更改用户昵称

我想知道您是否可以提供帮助(我什么也没搜索...),我正在学习如何使用discord.js节点,并且我想更改用户昵称(而不是用户名本身)

我的代码是

const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
    console.log('I am ready!');
});

client.on('message', message => {
    if (message.content.includes('changeNick')) {
        client.setNickname({nick: message.content.replace('changeNick ', '')});
    }
});

client.login('token');
Run Code Online (Sandbox Code Playgroud)

javascript node.js discord discord.js

7
推荐指数
2
解决办法
2万
查看次数

Discord Bot无法按名称获取频道

我一直在制作一个不和谐机器人,并希望让它向特定的"欢迎"频道发送消息.不幸的是,我无法这样做.我试过这个.

const welcomeChannel = bot.channels.get("name", "welcome")
welcomeChannel.sendMessage("Welcome\n"+member.user.username);
Run Code Online (Sandbox Code Playgroud)

但是在这个"welcomeChannel未定义"中.

编辑:

我试过用

const welcomeChannel = bot.channels.get("id", "18NUMBERIDHERE")
welcomeChannel.sendMessage("Welcome\n"+member.user.username);
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,这仍然是未定义的

javascript bots discord

7
推荐指数
2
解决办法
3万
查看次数

不和谐的彩色文本

我的目标是为文本部分着色.我知道我可以使用.sendCode("css","this is my message");哪个会使我的文字变黄但我不希望我的整个文本变成黄色.

也许我可以创建另一个.css文件,然后从我的JavaScript文件中调用它,但由于我对JavaScript缺乏经验,我希望得到一些帮助.我认为这是最快的方法.

css node.js discord

7
推荐指数
1
解决办法
11万
查看次数

删除Discord.py中的用户消息

有没有办法删除除机器人本身以外的任何人发送的消息,文档似乎表明它是可能的

没有任何适当的权限,您可以删除自己的邮件.但是,要删除其他人的消息,您需要具有相应的权限才能执行此操作.

但我无法找到一种方法来定位消息,以便在on_message事件触发器中执行此操作,我是否遗漏了某些内容,或者这是不可能的?

python discord

7
推荐指数
1
解决办法
2万
查看次数

是否可以使用不带齿轮的 discord.py 进行面向对象编程?

最近几天,我一直在尝试将用 discord.py 编写的 discord bot 的结构调整为更面向 OOP 的结构(因为放置函数并不理想)。

但我发现这样多的问题,我可以曾经预计,事情是,我想我的所有命令封装到一个单一的类,但我不知道什么装饰使用和如何,我必须继承哪些类。

到目前为止,我已经实现了一个类似于下面的代码,它运行但在执行命令的那一刻它抛出这样的错误:discord.ext.commands.errors.CommandNotFound:找不到命令“状态”

PD:我使用的是 Python 3.6

from discord.ext import commands


class MyBot(commands.Bot):

    def __init__(self, command_prefix, self_bot):
        commands.Bot.__init__(self, command_prefix=command_prefix, self_bot=self_bot)
        self.message1 = "[INFO]: Bot now online"
        self.message2 = "Bot still online {}"

    async def on_ready(self):
        print(self.message1)

    @commands.command(name="status", pass_context=True)
    async def status(self, ctx):
        print(ctx)
        await ctx.channel.send(self.message2 + ctx.author)


bot = MyBot(command_prefix="!", self_bot=False)
bot.run("token")
Run Code Online (Sandbox Code Playgroud)

python python-3.x discord discord.py discord.py-rewrite

7
推荐指数
1
解决办法
2805
查看次数

Discord.js Ping 命令

我试图为我的机器人发出 ping 命令,这是我的代码

client.on('message', message => {
  if (message.content === '+ping') {  
    message.channel.send(`Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
  }
});
Run Code Online (Sandbox Code Playgroud)

但是我最终收到以下错误

C:\Users\ujjwa\Desktop\All Disc\Test all\index.js:236
    message.channel.send(`Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
                                     ^

ReferenceError: m is not defined
    at Client.<anonymous> (C:\Users\lol\Desktop\All Disc\Test all\index.js:236:42)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\lol\Desktop\All …
Run Code Online (Sandbox Code Playgroud)

javascript node.js discord discord.js

7
推荐指数
2
解决办法
4万
查看次数

Discord Bot 只能看到自己,不能看到公会中的其他用户

我最近一直在关注本教程以开始使用 Discord 的 API。不幸的是,当我得到关于打印公会中所有用户的部分时,我碰壁了。

当我尝试打印所有用户的姓名时,它只打印机器人的名称,不打印其他任何内容。作为参考,公会共有六个用户。该机器人具有管理员权限

import os
import discord

TOKEN = os.environ.get('TOKEN')
client = discord.Client()

@client.event
async def on_ready():
    for guild in client.guilds:
        print(guild, [member.name for member in guild.members])

client.run(TOKEN)
Run Code Online (Sandbox Code Playgroud)

python pycharm python-3.x discord discord.py

7
推荐指数
2
解决办法
4937
查看次数