当前位置: 首页 > 知识库问答 >
问题:

我正在处理一个不和谐的问题。py但是我的on_成员被移除(成员)什么也不做

范楚
2023-03-14

我已经添加了所有必需的东西,如意图和网关,但我的机器人没有反应,我放了一个调试打印命令,以便当有人离开它时打印“机器人检测到“member.mention已经离开服务器”但是不管我做什么,它真的什么也做不了。

import discord

from discord.ext.commands import has_permissions
import asyncio
import logging

intents = discord.Intents.default()
intents.typing = True
intents.presences = True
intents.members = True

def replace_line(file_name, line_num, text):
    with open(file_name, 'r') as file:
        data = file.readlines()
    print(data)
        
    data[line_num] = text
    
    with open(file_name, 'w') as file:
        file.writelines( data )

    print(data)


def leavechannel(serverid, channel):
    flc = open("leavechannels.txt", "r")
    checker = (flc.read())
    flc.close
    
    x = checker.find(serverid)
    print (x)
    if x >= 0:
        lookup = serverid

        with open("leavechannels.txt") as myFile:
            for num, line in enumerate(myFile, 0):
                if lookup in line:
                    print (serverid +' found at line:', num)
                    linecache= num
        print(linecache)
        replace_line("leavechannels.txt", linecache, "\n"+serverid + " = " + channel)
    else:
        flc = open("leavechannels.txt", 'a+')
        flc.write(+serverid + " = " + channel)
        
        
client = discord.Client()

prefix = "ez!"

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_member_remove(member):
    print("recognised that "+member.mention+" has left")
    with open("leavechannels.txt") as myFile:
        for item in myFile.split("\n"):
            if member.server.id in item:
                leavechannelcache = item.strip()    
    embedVar= discord.Embed(title= member.mention + " has left :(", description="Come back plox!", color=12151512)
    await discord.Object(id=leavechannelcache).send(embed=embedVar)
    print("Sent message to #CHANNEL")



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

    if message.content.startswith(prefix+'leavechannel'):
        if message.author.guild_permissions.manage_channels or message.author.guild_permissions.administration:
            leavechannelhash = message.content.replace(prefix+'leavechannel ', '')
            print (leavechannelhash)
            await message.channel.send("Server leave channel has been set to "+leavechannelhash)
            leavechannel(str(message.guild.id), str(leavechannelhash))
            
                  
        else:
            await message.channel.send("Sorry, "+message.author+"; You do not have sufficient Permissions to do this.")
            

    
client.run('token')

我省略了很多内容,因为这是不必要的(主要是与帮助和你好世界填充命令相关的东西),但手头的主要问题是我有intents.members,我已经在不和谐的应用程序面板中激活了它,但是即使这样做之后,当有人离开服务器时,它甚至没有给我一个DEBUG打印,这显然表明它对成员离开的检测出了问题。你有什么建议吗?

共有1个答案

徐洛华
2023-03-14

如果使用dpy 1.5,则需要更改代码。1,有一个意图更新,所以在代码中使用它。

from discord import Intents
from discord.ext.commands import Bot

intent = Intents().all()

bot = Bot(command_prefix='prefix', intents=intent)

... # Some code under this line

并尝试使用Intents()。全部?在你的情况下,把意图像这样discord。客户(意向=意向)

 类似资料:
  • 我开始使用(不是命令,只有)。最近,我做了一个频道,名字显示了公会的成员数量,每次有人加入或离开都会更新。这是我的代码: 我还添加了命令上,以便bot将该名称编辑为我键入的任何名称。 现在,在添加了一些用于调试的打印后,我发现,\u member\u join()上的上的

  • 我正在通过discord开发discord机器人。js和我需要在这一刻获得语音频道中的所有成员。我该怎么做?我试过了 但是它说find不是一个函数。还有,我试过了 但是它说get不是一个函数。

  • 问题内容: 我正在研究TypeScript中私有成员的实现,但我感到有些困惑。Intellisense不允许访问私有成员,但是在纯JavaScript中,仅此而已。这使我认为TS无法正确实现私有成员。有什么想法吗? 问题答案: 就像类型检查一样,成员的隐私仅在编译器中强制执行。 私有属性被实现为常规属性,并且不允许类外的代码对其进行访问。 为了使某些东西真正成为类的私有对象,它不能成为该类的成员,

  • 我需要使用Discord的朋友对此代码提供一些帮助。js。我似乎无法编写此代码,我想要的是: 当人员/成员角色高于机器人时,机器人将发送消息称机器人无法踢高角色的成员,但当低于机器人角色的人员将被踢时 错误是:bot无法踢出bot角色上方或下方的所有成员 对此有什么解决办法吗?也许我遗漏了什么

  • 我对用JavaScript编码非常陌生,我正在尝试为我计划在不和谐服务器中的事件创建一个非常简单的机器人。 基本上,如果所提到的成员在数组中没有角色集,那么它应该做的就是将角色分配给所提到的成员(仅第一个成员)。 虽然代码本身不会抛出任何错误(机器人登录并打印就绪状态),但每当我试图召唤机器人时,它都不会做任何事情。我认为我的技能不够好,不能自己解决这个问题,所以任何帮助都将受到高度赞赏!谢谢!