尝试制作不和谐机器人,但为啥 client.send() 错误?

Posted

技术标签:

【中文标题】尝试制作不和谐机器人,但为啥 client.send() 错误?【英文标题】:try make discord bot, but why client.send() error?尝试制作不和谐机器人,但为什么 client.send() 错误? 【发布时间】:2021-06-24 10:08:08 【问题描述】:
import discord
import requests
import asyncio
from json import loads

twitch_Client_ID = 'id'
twitch_Client_secret = 'secret'
discord_Token = 'token'
discord_channelID = 'id'
discord_bot_state = 'TEST'
twitchID = 'tid'
msg = 'LIVE! https://www.twitch.tv/' + twitchID

client = discord.Client()


@client.event
async def on_ready():
    print(client.user.id)
    print("ready")

    game = discord.Game(discord_bot_state)
    await client.change_presence(status=discord.Status.online, activity=game)

    channel = client.get_channel(int(discord_channelID))

    oauth_key = requests.post("https://id.twitch.tv/oauth2/token?client_id=" + twitch_Client_ID +
                              "&client_secret=" + twitch_Client_secret + "&grant_type=client_credentials")
    access_token = loads(oauth_key.text)["access_token"]
    token_type = 'Bearer '
    authorization = token_type + access_token
    print(authorization)

    check = False

    while True:
        print("ready on Notification")

        headers = 'client-id': twitch_Client_ID,
                   'Authorization': authorization
        response_channel = requests.get(
            'https://api.twitch.tv/helix/streams?user_login=' + twitchID, headers=headers)
        print(response_channel.text)

        # try:
        if loads(response_channel.text)['data'][0]['type'] == 'live' and check == False:
            await client.wait_until_ready()
            await channel.send(msg)
            print("Online")
            check = True
        # except:
            # print("Offline")
            #check = False

        await asyncio.sleep(10)

client.run(discord_Token)

这里是我的所有代码.. 和 我看到了这个错误

AttributeError: 'NoneType' 对象没有属性 'send'

        # try:
        if loads(response_channel.text)['data'][0]['type'] == 'live' and check == False:
            await client.wait_until_ready()
            await channel.send(msg)

我认为有问题的代码在这里。 这里有什么问题? 为什么总是出错.....

我试试 这个:https://www.reddit.com/r/discordapp/comments/6ylp7t/python_bot_channel_object_has_no_attribute_send/ 和这个: AttributeError: 'NoneType' object has no attribute 'send' Discord.py rewrite

但不要为我工作!

【问题讨论】:

你确定channel中存储了一个有效的通道对象? 你有没有试过检查channel = client.get_channel(int(discord_channelID))时的结果是什么?您是否尝试检查 discord_channelID 的值是否正确? 谢谢大家的回答!我解决了这个问题! 【参考方案1】:

看起来像你的channel is None。根据docs get_channel(id: int) 可能会在未找到频道时返回None。仔细检查您的discord_channelID 是否正确,并且它是int(不是您的示例中的str)。

【讨论】:

感谢您的回答。我总是尝试 channel = discord_channelID,但这是不正确的。所以,我尝试了 channel = discord_message_channelID。而且,为我工作!谢谢

以上是关于尝试制作不和谐机器人,但为啥 client.send() 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不和谐机器人适用于默认表情符号,而当我放置自定义表情符号时不起作用?

TypeError:尝试制作不和谐机器人时无法读取未定义的属性“id”

我将如何制作一个可以指出链接的不和谐机器人?

为啥我的不和谐机器人不发送每日消息

为啥我的不和谐机器人只执行一次我的命令,而且只执行一次?

如何为不和谐的机器人制作一个可变的嵌入列表?