Discord BOT 与 Python,如何让它在我们发送命令的频道中回复(完成)

Discord BOT with Python, How to make it reply in the channel we send the command (Done)

Done! Thanks to anyone who helped me out:) Still maybe you have better answers, so, feel free to answer!

我知道,这可能看起来像一个愚蠢的问题,但如果你认为我是 为 Discord 制作机器人的初学者 Python其他 Python 知识和 Stack Overflow 可能只是一个地方,我希望它不会。 (我太新了,当我看到我的机器人上线时,我真的被我的幸福吵醒了家里的每个人哈哈)

正如我在其他帖子、教程等中看到的那样; (不要介意 , 和 的用法;它可能是错误的)我们必须指定频道的 ID,那么我们如何才能在用户发送命令的频道中回复呢?也许使用某种命令获取当前频道的 ID?我不知道。

import discord

TOKEN = 'XXXXX'

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('!hello'):
        msg = 'Hi {0.author.mention}'.format(message)
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

(因为我懒得重新生成令牌,所以我在这个例子中把它变成了 xxxxx 但别担心,我把它放在了正常的代码中。)

正如我所见,即使有类似的问题也没有相同的问题(我看不到答案或问题,因为每个人都知道该怎么做)

问题出在send_message部分。它给出了一个错误。

您只需获取频道对象并使用 message.channel.send() 而非 client.send_message()

向其发送消息
if message.content.startswith('!hello'):
    msg = 'Hi {0.author.mention}'.format(message)
    await message.channel.send(msg)

将来您可能想尝试这样的事情,或者可能出于任何原因遇到它:

from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command()
#This is defining a '!hello' command
async def hello(ctx):
    #In this case you have to use the ctx to send the message
    #Good to remember that ctx is NOT a parameter wich the user will give
    msg = f'Hi {ctx.author.mention}'
    await ctx.send(msg)

您可以通过两种方式发送消息。一种是使用 on_message,但我建议不要使用它,因为它可能会干扰代码中的其他命令。

示例:

import discord

client = discord.Client(command_prefix='!')

@client.event
async def on_ready()
 print('Bot is ready')

#example message
@client.command()
async def test(ctx):
 await ctx.send('This message is a test')

client.run('YOUR TOKEN')

在bot频道执行“!test”即可调用测试指令

进口os 导入下一条线 来自 nextcord.ext 导入命令

客户=commands.Bot(command_prefix='Your Prefered Prefix')

@client.command() 异步定义高(ctx): 等待 ctx.send(f"嗨 {ctx.author.name}!")

client.run(代币)