Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python如何分割消息_Python_Python 3.x_Discord.py - Fatal编程技术网

Python如何分割消息

Python如何分割消息,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,在discord chat中,每条消息最多只能包含2000个字符,那么有没有办法绕过它 如下面代码中的示例,当有人键入!pingbot发送嵌入消息。所以,是否有可能在某行机器人隐藏该消息并提供查看或单击下一页或其他内容的选项之后或之前拆分消息 @bot.command(pass_context=True) async def ping(ctx): embed=discord.Embed(title="Something Title", description="something any

在discord chat中,每条消息最多只能包含2000个字符,那么有没有办法绕过它

如下面代码中的示例,当有人键入
!ping
bot发送嵌入消息。所以,是否有可能在某行机器人隐藏该消息并提供查看或单击下一页或其他内容的选项之后或之前拆分消息

@bot.command(pass_context=True)
async def ping(ctx):
    embed=discord.Embed(title="Something Title", description="something anything goes here")
    await bot.say(embed=embed)

您可以自己分割文本,也可以使用suggestend py@Prashant Godhani等简单方法,并使用:


如果您希望自己复制textwrap模块的功能,您可以通过在空格处将文本拆分为单词并组合这些单词,直到它们超出允许使用的长度。把这个单词放在下一句话中,把所有当前单词重新连接在一起并存储在一个列表中。循环直到完成,如果需要,添加最后部分并返回列表:

# slightly more complex self-made wrapper:
import lorem
print("----------------------")

def sayLongLineSplitted(text,wrap_at=200):
    """Splits text at spaces and joins it to strings that are as long as 
    possible without overshooting wrap_at.

    Returns a list of strings shorter then wrap_at."""
    splitted = text.split(" ")
    def gimme():
        """Yields sentences of correct lenght."""
        len_parts = 0
        parts = []   
        for p in splitted: 
            len_p = len(p)
            if len_parts + len_p < wrap_at:
                parts.append(p)
                len_parts += len_p + 1  
            else:
                yield ' '.join(parts).strip()
                parts = [p]
                len_parts = len_p 
        if parts:
            yield ' '.join(parts).strip()

    return list(gimme()) 


for part in sayLongLineSplitted(lorem.paragraph(),40):
    print(part)
textwrap
的输出-示例:

# 234567890123456789012345678901234567890

Etincidunt aliquam etincidunt velit 
numquam. Quisquam porro labore velit. 
Modi modi porro quaerat dolor etincidunt 
quisquam. Ut ipsum quiquia non quisquam 
magnam ut sit. Voluptatem non non 
dolorem. Tempora quaerat neque quaerat 
dolorem velit magnam ipsum. 

因此,只需将此函数
def sayLongLineSplitted
添加到bot。我是否需要向我的bot命令添加任何内容
@bot.command(pass\u context=True)async def ping(ctx):
?@demory拆分函数
sayLongLineSplitted()
将文本拆分为正常长度的部分。您需要为此列表的每个部分按顺序调用bot一次。
# 234567890123456789012345678901234567890

Ut velit magnam sed sed. Eius modi
quiquia numquam. Quaerat eius tempora
tempora consectetur etincidunt est. Sit
dolor quaerat quaerat amet voluptatem
dolorem dolore. Sit adipisci non
etincidunt est aliquam etincidunt sit.
Quaerat porro sed sit.
# 234567890123456789012345678901234567890

Etincidunt aliquam etincidunt velit 
numquam. Quisquam porro labore velit. 
Modi modi porro quaerat dolor etincidunt 
quisquam. Ut ipsum quiquia non quisquam 
magnam ut sit. Voluptatem non non 
dolorem. Tempora quaerat neque quaerat 
dolorem velit magnam ipsum.