Pythonを使用してDiscordボットを作成しています。ボットがランダムなメッセージに反応するようにしたいのですが、これはを使用して正常random.choice
に機能します。ただし、何かを追加したかったのです。random.choices
(ここのドキュメント)を使用すると、リストに重みを追加できるため、一部が他よりも頻繁に選択されることがわかりました。今私は持っています:
@bot.event
async def on_member_join(channel):
time.sleep(2)
channel = bot.get_channel(723954693826674701)
brankos_greetings = [
"testMessageCommon1",
"testMessageCommon2",
"testMessageCommon3",
"testMessageCommon4",
"testMessageCommon5",
"testMessageCommon6",
"testMessageCommon7",
"testMessageCommon8",
"testMessageCommon9",
"testMessageCommon10",
"testMessageSemiRare1",
"testMessageSemiRare2",
"testMessageSemiRare3",
"testMessageSemiRare4",
"testMessageSemiRare5",
"testMessageSemiRare6",
"testMessageSemiRare7",
"testMessageRare1",
"testMessageRare2"
]
weights = [
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.03,
0.03,
0.03,
0.03,
0.03,
0.03,
0.03,
0.01,
0.01,
]
response = random.choices(brankos_greetings, weights, k = 1)
await channel.send(response)
ただし、これによりチャットで次の出力が得られます['testMessageCommon1'] ['testMessageRare1']
。等
私が試してみました: response = str(random.choices(brankos_greetings, weights, k = 1))
そして await channel.send(str(response))
そして response = random.choices(brankos_greetings, weights, k = 1).strip('[]')
そして await channel.send(response.strip(['']))
しかし、何も機能しません。
だから私の質問は:ここでこのリストを文字列に変換するにはどうすればよいですか?
random.choices()
結果をリストとして返します。があるのでk=1
、これは返される結果が1つの要素を持つリストになることを意味します。その要素をメッセージとして送信するには、その要素にインデックスを付けてアクセスする必要があります。言い換えると、
response = random.choices(brankos_greetings, weights, k = 1)
await channel.send(response[0]) # index the first (zeroth) element
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加