-1

我一直在使用 twitch 和 discord-rewrite api

我一直在编写一个程序,discord 中的用户可以输入 !Notify (twitch-client-id) 当他们在 twitch 上关注的一个人开始流式传输时,它将在不和谐上通知他们。我遇到的问题是,我不知道如何让机器人在用户输入“通知”的频道中说“名称已开始流式传输”。我已经到了完成所有逻辑的地步发现有人在流式传输时,我只是不知道如何打印出来

我尝试过制作如下功能:

@client.event async def send(msg): 等待 client.send_message(msg)

然后直接调用它并将味精放入,但这不起作用

def relay_detection(self):
    while True:
        time.sleep(5)
        if self.api_request == True:
            online = self.new_twitch_streams
            offline = self.offline_twitch_streams
            print("Checking")


            if online != []:
                for x in range(len(online)):
                    self.prev_twitch_streams.append(online[x])
                    print(f"{online[x]} has gone live on Twitch!")
            if offline != []:
                for x in range(len(offline)):
                    self.prev_twitch_streams.remove(offline[x])
                    print(f"{offline[x]} has gone offline on Twitch!")
        self.api_request = False

让我解释。“在线”是一个包含当前正在流式传输的所有主播的列表,“离线”是一个刚刚下线的所有主播的列表。如您所见,当我检测到有人开始流式传输或停止流式传输时,我打印了“名称已在 twitch 上上线”和“名称已在 twitch 上下线”。所以我需要用 discord-rewrite api 创建一个函数来做到这一点。

所以,总而言之,我需要一个函数,当我调用它时,我的机器人可以打印出一个消息。我想使用 discord-rewrite api,这可能是我找不到的。

4

1 回答 1

0

我不确定 twitch API 是如何工作的,但是如果您需要一个可以发送消息的函数,那很简单。看起来这是一个齿轮,如果不是,只需将所有更改self.clientclient.

在您的代码中,您是否有以下任何一项:

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

或这个:

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

在我的,我有前者,所以我将使用客户端。首先,您需要指定函数应将消息发送到何处。如果您使用的是最新版本的 discord.py(我相信是 1.2.3)。您应该能够在函数的顶部使用它。您需要将号码替换为您希望发送到的频道的 ID。

channel = await client.fetch_channel(00000000000000001)

如果您使用的不是最新版本,则可以使用类似的方法,将数字替换为公会(服务器)的 ID 和您希望将其发送到的频道。

guild = await client.fetch_guild(0000000000000001)
channel = guild.get_channel(0000000000000000002)

这两个都将返回一个 Channel,您可以在其中发送消息,如下所示:

await channel.send("Message goes here")

因此,如果您想使用该功能向 discord 发送消息,我会将其更改为:

def relay_detection(self):
channel = await self.client.fetch_channel(00000000000000001)
while True:
    time.sleep(5)
    if self.api_request == True:
        online = self.new_twitch_streams
        offline = self.offline_twitch_streams
        print("Checking")


        if online != []:
            for x in range(len(online)):
                self.prev_twitch_streams.append(online[x])
                await channel.send(f"{online[x]} has gone live on Twitch!")
        if offline != []:
            for x in range(len(offline)):
                self.prev_twitch_streams.remove(offline[x])
                await channel.send(f"{offline[x]} has gone offline on Twitch!")
    self.api_request = False

编辑:如果您不确定如何获得可以在此处解释的这些 ID:

https://support.discordapp.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-

于 2019-08-14T00:48:42.520 回答