複数のサーバーに対するDiscord.pyウェルカムメッセージ

Unknown_Shell

複数のサーバーに配置する予定の不和ボットを作成しています。サーバーごとに異なるウェルカムチャネル名などがあります。ウェルカムメッセージを作成し、ボットに「welcome」というチャネルにメッセージを投稿させてみました。これでこの問題は解決しましたが、機能しませんでした。サーバーの所有者がボットに送信するチャネルIDをサーバー名/ IDで保存するデータベースを作成することを考えました。トリガーされると、ボットはサーバーIDをデータベース内のIDと照合し、サーバーIDにリンクされたチャネルIDを取得します。しかし、それはSQLまたはPostgreSQLでの多くのコーディングであり、ボットにサーバーIDとチャネルIDをデータベースに保存させる方法、ボットをサーバーIDと一致させてから、チャネルIDを取得する方法を学ぶ必要があります。そしてそれをサーバーにメッセージを投稿します。不和なボットやさまざまなサーバーへのウェルカムメッセージの作成に関するドキュメントはありません。私はそれを行うためのより良い方法があるかどうか、そしてどのようにそれを行うのか疑問に思いましたか?

ウェルカムメッセージに関して私がこれまでに持っていること。


import discord
import logging
import asyncio
import random
import time
import tweepy, discord

from discord.ext import commands
from discord.ext.commands import bot

#File Imports
from config import *


client = commands.Bot(command_prefix='sec.')

# logger = logging.getLogger('discord')
# logger.setLevel(logging.DEBUG)
# handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w')
# handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
# logger.addHandler(handler)

@client.event
async def on_ready():
    print('Logged in as %s' % client.user.name)
    while True:
        presence = random.choice(['sec.help', 'Defending Servers'])
        activity = discord.Game(name=(presence))
        await client.change_presence(status=discord.Status.online, activity=activity)
        await asyncio.sleep(7)

client.remove_command('help')

@client.event
async def on_member_join(member):
    # Adds role to user
    # role = discord.utils.get(member.server.roles, name='Member')
    # await client.add_roles(member, role)

    # Random embed color
    range = [255,0,0]
    rand = random.shuffle(range)

    # Welcomes User
    embed = discord.Embed(title="{}'s info".format(member.name), description="Welcome too {}".format(member.guild.name))
    embed.add_field(name="Name", value=member.name, inline=True)
    embed.add_field(name="ID", value=member.id, inline=True)
    embed.add_field(name="Status", value=member.status, inline=True)
    embed.add_field(name="Roles", value=member.top_role)
    embed.add_field(name="Joined", value=member.joined_at)
    embed.add_field(name="Created", value=member.created_at)
    embed.set_thumbnail(url=member.avatar_url)
    inlul = client.get_channel(CHANNEL_ID)

    await inlul.send(inlul, embed=embed)

これに関するドキュメントを見つけたら、私はそれを読みたいと思います。私が見つけたのは、基本的なボットで、チャネルIDを入力することだけです。

Silas Hayes-Williams

ボットの規模がはるかに小さい場合、たとえばサーバーが数台しかない場合は、jsonファイルを使用して辞書を保存することは悪い考えではないと思います。

サーバーがサーバーに参加するときに、最上位のテキストチャネルのIDをデフォルトとして保存し、コマンドで使用するチャネルを変更できるようにすることができます。これは、on_guild_joinイベントで実行できます。

import json

#sets value in json to guild id upon the bot joining the guild
@client.event
async def on_guild_join(guild):
    #loads json file to dictionary
    with open("filename.json", "r") as f:
        guildInfo = json.load(f)

    guildInfo[guild.id] = guild.text_channels[0] #sets key to guilds id and value to top textchannel
    
    #writes dictionary to json file
    with open("filename.json", "w" as f:
        json.dump(guildInfo, f)

#allows server members to set channel for welcome messages to send to    
@client.command()
async def welcomeMessage(ctx):
    with open("filename.json", "r") as f:
        guildInfo = json.load(f)

    guildInfo[ctx.message.guild.id] = ctx.message.channel.id #sets channel to send message to as the channel the command was sent to

    with open("filename.json", "w") as f:
        json.dump(guildInfo, f)

その後、使用するだけ

with open("filename.json", "r"):
    guildInfo = json.load(f)

channnel = guildInfo[ctx.message.guild.id]

メッセージを送信するチャネルを取得し、

channel.send(embed=embed)

メッセージを送信するには

実行する前に、同じディレクトリに空のjsonファイルがあることを確認{}し、ファイルに追加してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

discord.pyのウェルカムメッセージでctxをどのように使用しますか?

分類Dev

discord.pyを使用してウェルカムメッセージにギルド名を含める方法

分類Dev

discord.jsを使用してdiscordサーバーに参加するときのウェルカムメッセージ

分類Dev

メッセンジャーのConversationUpdateのウェルカムメッセージ

分類Dev

ウェルカムメッセージ(埋め込み)

分類Dev

Apache FTPClient:ウェルカムメッセージを読む

分類Dev

最初のテキストチャネルdiscord.pyでウェルカムメッセージを送信する方法

分類Dev

メッセンジャーボットにウェルカムメッセージを設定する方法

分類Dev

新しいメンバーが入ったときにjsのdiscordボットにウェルカムメッセージを作成する

分類Dev

SSHウェルカムメッセージでサーバー名を設定する方法

分類Dev

discord.jsでdiscordサーバーの新しいメンバーにウェルカムメッセージを作成するにはどうすればよいですか?

分類Dev

ipython-ウェルカムメッセージを無効にする

分類Dev

minicomでウェルカムメッセージを無効にする方法

分類Dev

vpsのウェルカムメッセージを変更する

分類Dev

vpsのウェルカムメッセージを変更する

分類Dev

複数の aspx ページに対する共通のカスタム サーバー側検証関数

分類Dev

ウェルカムメッセージ埋め込みDiscord.js

分類Dev

C#を使用してDiscordでユーザーウェルカムメッセージを作成する方法

分類Dev

メールなしの「メールあり」ウェルカムメッセージ

分類Dev

Discord.jsウェルカムメッセージはアバターを表示しません

分類Dev

ウェルカムメッセージをfunctions.phpのヘッダーに統合します

分類Dev

SSHウェルカムメッセージに最後のログインのみを表示する

分類Dev

17.04のSSHウェルカムメッセージは、12.04に関する通知を示しています

分類Dev

C#でクライアントの画面にウェルカムメッセージを送信する

分類Dev

Net :: SFTP :: Foreignを使用するPerlはサーバーのウェルカムメッセージを削除します

分類Dev

Discordサーバーでメッセージ作成者のタイムゾーンを取得するにはどうすればよいですか?(discord.py)

分類Dev

ウェルカムメッセージをバイパスする明示的な呼び出し

分類Dev

Microsoft BotFrameworkを使用してボットからのウェルカムメッセージを表示する方法

分類Dev

discord py-メッセージ削除のパフォーマンスが遅い(複数のサーバー)

Related 関連記事

  1. 1

    discord.pyのウェルカムメッセージでctxをどのように使用しますか?

  2. 2

    discord.pyを使用してウェルカムメッセージにギルド名を含める方法

  3. 3

    discord.jsを使用してdiscordサーバーに参加するときのウェルカムメッセージ

  4. 4

    メッセンジャーのConversationUpdateのウェルカムメッセージ

  5. 5

    ウェルカムメッセージ(埋め込み)

  6. 6

    Apache FTPClient:ウェルカムメッセージを読む

  7. 7

    最初のテキストチャネルdiscord.pyでウェルカムメッセージを送信する方法

  8. 8

    メッセンジャーボットにウェルカムメッセージを設定する方法

  9. 9

    新しいメンバーが入ったときにjsのdiscordボットにウェルカムメッセージを作成する

  10. 10

    SSHウェルカムメッセージでサーバー名を設定する方法

  11. 11

    discord.jsでdiscordサーバーの新しいメンバーにウェルカムメッセージを作成するにはどうすればよいですか?

  12. 12

    ipython-ウェルカムメッセージを無効にする

  13. 13

    minicomでウェルカムメッセージを無効にする方法

  14. 14

    vpsのウェルカムメッセージを変更する

  15. 15

    vpsのウェルカムメッセージを変更する

  16. 16

    複数の aspx ページに対する共通のカスタム サーバー側検証関数

  17. 17

    ウェルカムメッセージ埋め込みDiscord.js

  18. 18

    C#を使用してDiscordでユーザーウェルカムメッセージを作成する方法

  19. 19

    メールなしの「メールあり」ウェルカムメッセージ

  20. 20

    Discord.jsウェルカムメッセージはアバターを表示しません

  21. 21

    ウェルカムメッセージをfunctions.phpのヘッダーに統合します

  22. 22

    SSHウェルカムメッセージに最後のログインのみを表示する

  23. 23

    17.04のSSHウェルカムメッセージは、12.04に関する通知を示しています

  24. 24

    C#でクライアントの画面にウェルカムメッセージを送信する

  25. 25

    Net :: SFTP :: Foreignを使用するPerlはサーバーのウェルカムメッセージを削除します

  26. 26

    Discordサーバーでメッセージ作成者のタイムゾーンを取得するにはどうすればよいですか?(discord.py)

  27. 27

    ウェルカムメッセージをバイパスする明示的な呼び出し

  28. 28

    Microsoft BotFrameworkを使用してボットからのウェルカムメッセージを表示する方法

  29. 29

    discord py-メッセージ削除のパフォーマンスが遅い(複数のサーバー)

ホットタグ

アーカイブ