Конечно, просто добавьте text_channel = client.get_channel('1234567890')
и укажите его упоминание с text_channel.mention
(где 1234567890
- идентификатор канала, на который вы хотите перейти)
Таким образом, код будет выглядеть примерно так
@client.event
async def on_message(message):
text_channel = client.get_channel('1234567890')
msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
if message.content.startswith('!p'):
await client.delete_message(message)
await client.send_message(message.channel, msg)
return
Что касается вашего второго вопроса, вы можете сделать что-то вроде этого
arr = ['!p','!a','!b']
for a in arr:
if message.content.startswith(a):
break
else:
return
и удалите if message.content.startswith('!p'):
в целом
Чтобы игнорировать определенный канал, просто наберите if message.channel.id == "9876543210":
в верхней части функции (9876543210
- это идентификатор канала, с которого вы хотите игнорировать команды)
С этими изменениями код выглядит так
@client.event
async def on_message(message):
if message.channel.id == "9876543210":
return
arr = ['!p','!a','!b']
for a in arr:
if message.content.startswith(a):
break
else:
return
text_channel = client.get_channel('1234567890')
msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
await client.delete_message(message)
await client.send_message(message.channel, msg)
return