我有一个不和谐的机器人。
我想让它做的是,当机器人检测到用户正在流媒体时,将他们流媒体的URL打印到聊天中。
我在试图找出如何获得用户的抽搐频道url时遇到了问题。。。
这就是我的
@client.event
async def on_member_update(before, after):
aname = after.display_name
aactivity = after.activity.type
mactivity = str(after.activities)
role = after.guild.get_role(736271867836498031)
channel = client.get_channel(736269005651836985)
memberinfo = after.activities.streaming.url
print(memberinfo)
if "Streaming name" in mactivity:
await after.add_roles(role)
await channel.send('{} has started streaming!'.format(after.display_name))
print(aname + " is streaming!")
else:
await after.remove_roles(role)
streamchannel = discord.Profile
await channel.send('{} is not streaming!'.format(after.display_name))
print(aname + " is not streaming.")
print('member updated status')
我有什么东西不见了吗?我根本不知道如何找到流媒体的URL,或者从他们的连接帐户中获取。
Member
对象具有Activity
属性。您可以检查before.activity
或after.activity
是否是Streaming
类的实例
如果是,则用户停止或开始流式传输,我们可以在channel
:中发送消息
from discord import Streaming
from discord.utils import get
@client.event
async def on_member_update(before, after):
if not before.activity.type == after.activity.type:
return
role = get(after.guild.roles, id=736271867836498031)
channel = get(after.guild.channels, id=736269005651836985)
if isinstance(after.activity, Streaming):
await after.add_roles(role)
await channel.send(f"{before.mention} is streaming on {activity.platform}: {activity.name}.nJoin here: {activity.url}")
elif isinstance(before.activity, Streaming):
await after.remove_roles(role)
await channel.send(f'{after.mention} is no longer streaming!')
else:
return
参考:不一致.py文档