Python代码在Discord中换行失效:换行触发消息发送问题
解决Discord多行消息被拆分成多条发送的问题
问题原因
你的代码中使用keyboard.write()输入包含换行符的字符串时,Discord会将每个换行符识别为Enter键触发发送,导致原本的多行内容被拆分成多条消息发送。而Discord内实现消息换行需要使用Shift+Enter组合键,而非单纯的Enter。
解决方案
方案1:手动逐行输入+Shift+Enter换行
逐行输入内容,每行结束后发送shift+enter实现消息内换行,最后再按Enter发送完整消息:
# 输入分隔线 keyboard.write("-------------------------------") keyboard.send("shift+enter") # 输入第一行内容 keyboard.write(f"1) {name} (-)") keyboard.send("shift+enter") # 输入第二行内容 keyboard.write(f"2) {rules} / {times}") keyboard.send("shift+enter") # 输入第三行内容 keyboard.write("3) by Fagi_Zak") keyboard.send("shift+enter") # 输入第四行内容+结尾分隔线 keyboard.write(f"4) {str(Total)}-------------------------------") # 发送完整消息 keyboard.send("enter")
方案2:剪贴板粘贴(更高效可靠)
用剪贴板复制完整的多行消息,再粘贴到Discord输入框,避免逐行输入的麻烦:
- 先安装
pyperclip模块:
pip install pyperclip
- 修改代码中的消息输入部分:
import pyperclip # 构造完整的多行消息(用三引号保留换行格式) full_message = f"""------------------------------- 1) {name} (-) 2) {rules} / {times} 3) by Fagi_Zak 4) {str(Total)}-------------------------------""" # 将消息复制到剪贴板 pyperclip.copy(full_message) # 粘贴到Discord输入框 keyboard.send("ctrl+v") # 发送消息 keyboard.send("enter")
额外代码修复
你的循环部分存在缩进错误:time.sleep(1.5)应该缩进,属于循环内的代码,否则会在循环外只执行一次,导致逻辑异常。修复后:
while Total < 35: name = input("Ник игрока? ") rules = input("Номер правила? ") times = input("Время наказания? ") Total_punishment = int(input("Введите номер вашего ПОСЛЕДНЕГО наказания: ")) one = 1 Total = Total_punishment + one print("-------------------------------") print(f"1) {name} (-)") print(f"2) {rules} / {times}") print("3) by Fagi_Zak") print(f"4) {Total}") print("-----------------------------------") os.startfile(r'C:\Users\Romanlll333\AppData\Local\Discord\app-1.0.9008\Discord.exe') # 修复缩进:sleep属于循环内步骤 time.sleep(1.5) pyautogui.click(685, 872) # 这里替换为上面的任意一种消息输入方案 # ...(省略消息输入代码)... keyboard.send("enter")
内容的提问来源于stack exchange,提问作者NetCat
相关产品推荐
相关产品推荐

