如何使用 discord.py 获取消息
How to fetch messages using discord.py
我创建了一段代码,它曾经是一个 snipe 函数到一个 fetch 函数我假设 snipe 和 fetch 基本上是相反的,我的理论似乎是正确的!然而,情况并非如此,或者我为什么要创建这个问题,我遇到了在我 运行 我的 !fetch
命令后没有获取我的消息的问题,没有应该是嵌入的结果显示 content/message.
Concern/question
我的代码在 !fetch
命令为 运行 后没有发送嵌入,console/terminal 中没有列出错误。但是,当在频道内发送消息时,控制台内的嵌入信息为 logged/shown(Discord 名称、标签、ID、公会 ID、公会名称等)! 我想从频道获取消息并在命令为 运行 时打印消息。
代码
import discord
from discord.ext import commands
from tokens import token, CHANNEL_ID
client = commands.Bot(command_prefix='!')
client.sniped_message = None
@client.event
async def on_ready():
print("Your bot is ready.")
@client.event
async def on_message(message):
# Make sure it's in the watched channel, and not one of the bot's own
# messages.
if message.channel.id == CHANNEL_ID and message.author != client.user:
print(f'Fetched message: {message}')
client.sniped_message = message
@client.command()
async def fetch(ctx):
# Only respond to the command in the watched channel.
if ctx.channel.id != CHANNEL_ID:
return
if client.sniped_message is None:
await ctx.channel.send("Couldn't find a message to fetch!")
return
message = client.sniped_message
embed = discord.Embed(
description=message.content,
color=discord.Color.purple(),
timestamp=message.created_at
)
embed.set_author(
name=f"{message.author.name}#{message.author.discriminator}",
icon_url=message.author.avatar_url
)
embed.set_footer(text=f"Message sent in: #{message.channel.name}")
await ctx.channel.send(embed=embed)
client.run(token)
我不确定 sniped
消息是否对代码有影响。
另外,这段代码是我朋友分享的,他的狙击功能得到了帮助。*谢谢!
Overriding the default provided on_message forbids any extra commands from running. To fix this, add a bot.process_commands(message)
line at the end of your on_message.
所以你只需要在 on_message
的末尾添加 await client.process_commands(message)
我创建了一段代码,它曾经是一个 snipe 函数到一个 fetch 函数我假设 snipe 和 fetch 基本上是相反的,我的理论似乎是正确的!然而,情况并非如此,或者我为什么要创建这个问题,我遇到了在我 运行 我的 !fetch
命令后没有获取我的消息的问题,没有应该是嵌入的结果显示 content/message.
Concern/question
我的代码在 !fetch
命令为 运行 后没有发送嵌入,console/terminal 中没有列出错误。但是,当在频道内发送消息时,控制台内的嵌入信息为 logged/shown(Discord 名称、标签、ID、公会 ID、公会名称等)! 我想从频道获取消息并在命令为 运行 时打印消息。
代码
import discord
from discord.ext import commands
from tokens import token, CHANNEL_ID
client = commands.Bot(command_prefix='!')
client.sniped_message = None
@client.event
async def on_ready():
print("Your bot is ready.")
@client.event
async def on_message(message):
# Make sure it's in the watched channel, and not one of the bot's own
# messages.
if message.channel.id == CHANNEL_ID and message.author != client.user:
print(f'Fetched message: {message}')
client.sniped_message = message
@client.command()
async def fetch(ctx):
# Only respond to the command in the watched channel.
if ctx.channel.id != CHANNEL_ID:
return
if client.sniped_message is None:
await ctx.channel.send("Couldn't find a message to fetch!")
return
message = client.sniped_message
embed = discord.Embed(
description=message.content,
color=discord.Color.purple(),
timestamp=message.created_at
)
embed.set_author(
name=f"{message.author.name}#{message.author.discriminator}",
icon_url=message.author.avatar_url
)
embed.set_footer(text=f"Message sent in: #{message.channel.name}")
await ctx.channel.send(embed=embed)
client.run(token)
我不确定 sniped
消息是否对代码有影响。
另外,这段代码是我朋友分享的,他的狙击功能得到了帮助。*谢谢!
Overriding the default provided on_message forbids any extra commands from running. To fix this, add a
bot.process_commands(message)
line at the end of your on_message.
所以你只需要在 on_message
await client.process_commands(message)