第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法將字符串轉(zhuǎn)換為 discord.py 中的 discord.Member 類型?

有沒有辦法將字符串轉(zhuǎn)換為 discord.py 中的 discord.Member 類型?

森欄 2023-03-22 10:17:41
我一直在嘗試向我的 discord 機器人添加一個井字游戲迷你游戲。我最初在 @client.command() 中編寫代碼,因為我認(rèn)為您可以在其中使用 client.wait_for() 但不幸的是,您不能。無論如何,我不得不將我的代碼轉(zhuǎn)換為在 on_message() 函數(shù)上工作,現(xiàn)在我遇到了從初始命令中獲取 discord.Member 變量類型的問題,比如 ~tictactoe @user#1234。因此,例如,我嘗試在 on_message() 函數(shù)中編寫此代碼但沒有成功。if message.content.startswith("~tictactoe") or message.content.startwith("~ttt"):    member = str(message).split(" ")    member = discord.Member(member[1])    channel = message.channel這是我的完整代碼:if message.content.startswith("~tictactoe") or message.content.startwith("~ttt"):    member = str(message).split(" ")    member = discord.Member(member[1])    channel = message.channel    if member.bot: channel.send("You can't play against a bot!")    else:        while True:            x = 0            player = [message.author if (x % 2 == 0) else member]            x += 1            symbol = [':x:' if player == message.author else ':o:']            def check(m):                possibilities = ['a1','a2','a3','b1','b2','b3','c1','c2','c3']                return (m.content.lower() in possibilities or m.content.lower() == 'end') and m.author == player and m.channel == channel            if x != 1:                channel.send("TicTacToe\n{message.author.name} vs. {member.name}")                for i in range(3):                    channel.send(f"{board[i][0]}{board[i][1]}{board[i][2]}\n")            channel.send(f"{player.mention}, where do you want to place your marker?\na1\ta2\ta3\nb1\tb2\tb3\nc1\tc2\tc3\n or `end` to end game")            try:                cell = await client.wait_for('message', timeout=20.0, check=check)            except:                channel.send("Input invalid or you took too long to respond.")任何幫助appreciated :)
查看完整描述

1 回答

?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

使用message.mentions


message.mentionsdiscord.Member返回提到的列表(或者discord.User如果消息是在私人消息中發(fā)送的)。

# Safe method

if message.mentions:

? ? member = message.mentions[0]

else:

? ? return? # There was no mentions


# Riskier but simpler method

# Having no mentions or more than one would raise an error

member, = message.mentions

快速說明:回復(fù)被視為提及,message.mentions將包含您的消息中提到的成員和您回復(fù)的成員。


解析消息

提及等同于<@!id>,因此您可以解析您的消息以獲取成員的 id:


command, member = message.split()

member_id = int(member.strip('<@!>'))

然后,要從discord.Member中取出對象:


# Regardless of cache, but sends an API call

member = await bot.fetch_member(member_id)


# Depends on the bot's cache

# Doesn't make any API calls and isn't asynchronous

member = message.guild.get_member(member_id)


查看完整回答
反對 回復(fù) 2023-03-22
  • 1 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號