我有以下Discord bot向特定用户发送私信,但如果用户在服务器上禁用了直接消息,我在cmd中收到以下错误:
discord.errors.Forbidden:FORBIDDEN(状态代码:403):无法发送 给这个用户的消息
如何修改代码以便获取自定义消息而不是上述错误,例如"无法向此用户发送消息"
我用谷歌搜索但无法找到解决方案。
以下是当前代码:
import discord
import asyncio
import os
from users import userID
key = open("ID.txt","r").readline()
message = open("message.txt","r").read()
bot = discord.Client() # Assign client to an easier variable to follow... for fun.
@bot.event # must confirm the connection when it's done connecting
async def on_ready():
print("Connected!")
print("Username: " + bot.user.name)
print(" ")
user = await bot.get_user_info(userID)
await bot.send_message(user, message)
print("Done")
bot.run(key.strip())
答案 0 :(得分:1)
您需要使用try
- except
块,并使用可选的else
关键字。
try:
user = bot.send_message(user, message)
except discord.errors.Forbidden:
print(“User doesn’t allow direct messaging.”)
else:
print(“Done”)
这样做:它尝试将消息发送给用户。如果失败并收到discord.errors.Forbidden
异常,它将进入except
块,并打印消息,告知它被禁止。如果没有异常,则进入else
块,然后打印完成。