質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2133閲覧

Discord.py にてスペースと改行を含むメッセージを引数に渡したい。

nikuman1251

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/05/16 07:21

編集2019/05/16 07:55

前提・実現したいこと

Discord.py(rewrite版)を使ってDiscordのメモ帳くんBOTを作成しています。
送信されたスペース、改行を含むメッセージをそのまま変数に代入したいです。メッセージを送信する際にダブルコーテーションで囲うことはしたくありません。

今の所の妥協の仕様としては、改行、スペースを含む場合はダブルコーテーションで囲って送信するようにしています。

今まで一般公開されていたメモ帳くんBOTの仕様がスペース等もそのまま取り込むものだったため、同じ使用感で扱えるようにしたいです。

該当のソースコード

該当コマンド以外は省略しています。

Python

1#coding:utf-8 2 3import asyncio 4import json 5import random 6 7import discord 8from discord.ext import commands 9 10client = discord.Client() 11 12ACCESS_TOKEN = '********' 13bot = commands.Bot(command_prefix='!') 14 15@bot.command(name = 'madd') 16async def madd(ctx, title, memo): #問題の引数 17 imjson = openJSON() 18 userid = str(ctx.author.id) 19 if not userid in imjson: 20 tmpdict = {title : memo} 21 imjson.setdefault(userid, tmpdict) 22 else: 23 imjson[userid][title]= memo 24 writeJSON(imjson) 25 await ctx.send(ctx.author.name + "の" + title + "にメモを登録しました。") 26 27def openJSON(): 28 f = open(r'.\memo.json',encoding="utf-8") 29 returnObj = json.load(f) 30 f.close() 31 return returnObj 32 33def writeJSON(wdic): 34 f = open(r'.\memo.json',encoding="utf-8", mode="w") 35 json.dump(wdic, f,ensure_ascii=False) 36 f.close() 37 38 39bot.run(ACCESS_TOKEN) 40 41

試したこと

async def madd()の引数に**argument、*argは試してみましたが、
どちらも区切り文字として認識されてしまい、後から展開したときには詰まってしまいます。

補足情報(FW/ツールのバージョンなど)

Windows 10
Visual Studio Code 1.33.1
Python 3.6.8
discord.py 1.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

@bot.command(name='madd')
ではなく、
@client.event
async def on_message(message):
if message.startswith('!madd'):
と記述することで対応させました。

投稿2019/06/03 23:14

nikuman1251

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問