-
Notifications
You must be signed in to change notification settings - Fork 0
/
whateveryouwantvoiceandtextbotv0.0.1.py
165 lines (123 loc) · 4.89 KB
/
whateveryouwantvoiceandtextbotv0.0.1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
##required libraries
import asyncio
import time
import youtube_dl
import discord
from discord.ext import commands
from discord import voice_client
import shutil
import os
from discord.utils import get
##youtube_dl and ffmpeg settings
youtube_dl.utils.bug_reports_message = lambda: ''
ytdl_format_options = {
'format': 'bestaudio/best',
'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
'restrictfilenames': True,
'noplaylist': True,
'nocheckcertificate': True,
'ignoreerrors': False,
'logtostderr': False,
'quiet': True,
'no_warnings': True,
'default_search': 'auto',
'source_address': '0.0.0.0'
}
ffmpeg_options = {
'options': '-vn'
}
ytdl = youtube_dl.YoutubeDL(ytdl_format_options)
#url importation for youtube
class YTDLSource(discord.PCMVolumeTransformer):
def __init__(self, source, *, data, volume=0.5):
super().__init__(source, volume)
self.data = data
self.title = data.get('title')
self.url = data.get('url')
@classmethod
async def from_url(cls, url, *, loop=None, stream=False):
loop = loop or asyncio.get_event_loop()
data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))
if 'entries' in data:
data = data['entries'][0]
filename = data['title'] if stream else ytdl.prepare_filename(data)
return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)
#main class for the bot
class dailyfriendschatbot(commands.Cog):
def __init__(self, bot):
self.bot = bot
### plays audio files
@commands.command()
async def "#yourfunctionhere"(self, ctx):
source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(r"#insert path here"))
ctx.voice_client.play(source, after=lambda e: print('oynatıcı hatası: %s' % e) if e else None)
await ctx.send('your text here')
time.sleep(3.5)
await ctx.voice_client.disconnect()
@commands.command()
async def "#yourfunctionhere"(self, ctx):
source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(r"#insert path here"))
ctx.voice_client.play(source, after=lambda e: print('oynatıcı hatası: %s' % e) if e else None)
await ctx.send('your text here')
time.sleep(3)
await ctx.voice_client.disconnect()
@commands.command()
async def "#yourfunctionhere"(self, ctx):
source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(r"#insert path here"))
ctx.voice_client.play(source, after=lambda e: print('oynatıcı hatası: %s' % e) if e else None)
await ctx.send('your text here')
time.sleep(5)
await ctx.voice_client.disconnect()
#in order to play urlS from youtube
@commands.command()
async def yt(self, ctx, *, url):
"""yutup urlsi gir"""
async with ctx.typing():
player = await YTDLSource.from_url(url,loop=self.bot.loop)
ctx.voice_client.play(player, after=lambda e: print('oynatıcı hatası: %s' % e) if e else None)
await ctx.send('çalıyor: {}'.format(player.title))
#in order to adjust your volume
@commands.command()
async def ses(self, ctx, volume: int):
if ctx.voice_client is None:
return await ctx.send("you need to get in to the channel first")
ctx.voice_client.source.volume = volume / 100
await ctx.send("volume has changed to {}%".format(volume))
#in order to make bot quit from the voice channel
@commands.command()
async def "#durdur,stop"(self, ctx):
await ctx.voice_client.disconnect()
#text functions
@commands.command()
async def "#yourfunction"(self,ctx):
await ctx.send("#yourtext")
await ctx.voice_client.disconnect()
@commands.command()
async def "#yourfunction"(self,ctx):
await ctx.send("#yourtext")
await ctx.voice_client.disconnect()
"YOUR FUNCTIONS NAMES HERE,THEN .before_invoke"
#@yarra.before_invoke
#@olr.before_invoke
#@peh.before_invoke
#@yt.before_invoke
#@enockim.before_invoke
#@annen.before_invoke
async def ensure_voice(self, ctx):
if ctx.voice_client is None:
if ctx.author.voice:
await ctx.author.voice.channel.connect()
else:
await ctx.send("you need to be in a voice channel")
raise commands.CommandError("where are you")
elif ctx.voice_client.is_playing():
ctx.voice_client.stop()
ctx.author.voice.channel.disconnect()
bot = commands.Bot(command_prefix=commands.when_mentioned_or("."),
description=('for any questions: [email protected], AUTHOR KADRI CAN ULKER')
@bot.event
async def on_ready():
print('Logged in as {0} ({0.id})'.format(bot.user))
print('------')
bot.add_cog(dailyfriendschatbot(bot))
bot.run('YOUR BOT TOKEN HERE')