首页 > 解决方案 > 可以使用不和谐机器人发送定义的字符串

问题描述

我正在尝试制作一个不和谐的机器人来随机遇到 dnd,现在我有代码

import discord
import os
import random
import asyncio
client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    
    if message.content.startswith('$desert'):

        DesertList = ['charmander', 'charmeleon', 'charizard']

        Desert = random.choice(DesertList)
        await message.channel.send(Desert)

client.run("just trust me its the right ID")

我想要做的是发送沙漠(定义Desert = random.choice(DesertList)),但机器人不发送任何东西。我已经测试了 Desert 在 Visual Studio 的控制台中是否有一个值,它返回一个随机名称。我的基础是一些在不和谐中工作的东西,我在频道中输入 $hello,它会回复 Hello!

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

标签: pythonpython-3.xdiscorddiscord.py

解决方案


K 所以我完成了它,一切正常。最终代码看起来像

import discord
import os
import random
import asyncio
client = discord.Client()

DesertList1 = 'none'
DesertList2 = 'none'

def printdesert():
    print(DesertList1)

def randomizedesert():
    global DesertList1
    global DesertList2
    DesertList2 = ['charmander', 'charmeleon', 'charizard']
    DesertList1 = random.choice(DesertList2)


@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    
    if message.content.startswith('$desert'):
        global DesertList1
        randomizedesert()
        printdesert()
        message.channel.send("bruh")
        await message.channel.send(DesertList1)

client.run(":)")

简化它是必要的,但要在以后使用


推荐阅读