· 6 years ago · Nov 20, 2019, 02:02 PM
1using System;
2using System.Linq;
3using System.Media;
4using System.Threading;
5using System.Threading.Tasks;
6using VkNet;
7using VkNet.Enums.SafetyEnums;
8using VkNet.Exception;
9using VkNet.Model;
10using VkNet.Model.Keyboard;
11using VkNet.Model.RequestParams;
12
13namespace ConsoleApp19
14{
15 class Program
16 {
17 private static string MyAppToken = "c252b43a65233177e191548b0ad4ce746ee8e22b6ea2e5ee2b482c9a84a8805928997783bedf6098fb936";
18 private static ulong MyGroupId = 184265009;
19 private static string Message;
20 private static string AccessIdsList = "140052588\n191022179\n";
21 private static int Ra = 0;
22 private static bool kirloh = false;
23
24
25 static void Main(string[] args)
26 {
27 var api = new VkApi();
28 api.Authorize(new ApiAuthParams { AccessToken = MyAppToken });
29 var random = new Random();
30 var server = api.Groups.GetLongPollServer(MyGroupId); // HttpRequestException и WebException это одна FlurlHttpException
31
32 KeyboardBuilder key = new KeyboardBuilder();
33 key.AddButton("/админ", "987654321", KeyboardButtonColor.Primary, "123456789");
34 key.AddButton("2", "987654321", KeyboardButtonColor.Positive, "123456789");
35 key.AddButton("3", "987654321", KeyboardButtonColor.Negative, "123456789");
36 key.Clear();
37 MessageKeyboard keyboard = key.Build();
38
39 Console.WriteLine("Цикл запущен");
40 while (true)
41 {
42 try
43 {
44 var poll = api.Groups.GetBotsLongPollHistory(
45 new BotsLongPollHistoryParams
46 { Server = server.Server, Ts = server.Ts, Key = server.Key, Wait = 1 });
47 if (poll?.Updates == null) continue;
48 server.Ts = poll.Ts;
49
50 foreach (var update in poll.Updates)
51 {
52 if (update.Type == GroupUpdateType.MessageNew)
53 {
54 var p = api.Users.Get(new long[] { Convert.ToInt32(update.Message.FromId) }).FirstOrDefault();
55
56 Console.WriteLine(new String('=', 70));
57 Console.WriteLine($"Пользователь: {p.FirstName} {p.LastName} ({p.Id})");
58 Console.WriteLine($"Если это беседа то ид: {update.Message.PeerId}");
59 Console.WriteLine($"Cообщение: {update.Message.Text}");
60 Console.WriteLine($"Время: {update.Message.Date}");
61 Console.WriteLine(new String('=', 70));
62
63 if (kirloh)
64 {
65 if (p.Id == 164764142) // Тимур = 191022179, Я = 140052588, Артур = 164764142;
66 {
67 api.Messages.Send(new MessagesSendParams()
68 {
69 RandomId = random.Next(),
70 PeerId = update.Message.PeerId,
71 Keyboard = keyboard,
72 Message = $"Опа а {p.FirstName} ЧСВ снова что-то высрал"
73 });
74 }
75 }
76 switch (update.Message.Text)
77 {
78 default:
79 Message = update.Message.Text.ToLower();
80 break;
81 case "/admin":
82 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
83 {
84 api.Messages.Send(new MessagesSendParams()
85 {
86 RandomId = random.Next(),
87 //UserId = update.Message.PeerId,
88 PeerId = update.Message.PeerId,
89 Keyboard = keyboard,
90 Message = $"{p.FirstName}, вы являетесь администратором"
91 });
92 }
93 else
94 {
95 api.Messages.Send(new MessagesSendParams()
96 {
97 RandomId = random.Next(),
98 //UserId = update.Message.PeerId,
99 PeerId = update.Message.PeerId,
100 Keyboard = keyboard,
101 Message = $"{p.FirstName}, вы не являетесь администратором"
102 });
103 }
104 break;
105 case "/admins":
106 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
107 {
108 api.Messages.Send(new MessagesSendParams()
109 {
110 RandomId = random.Next(),
111 //UserId = update.Message.PeerId,
112 PeerId = update.Message.PeerId,
113 Keyboard = keyboard,
114 Message = $"Список администраторов:\n{AccessIdsList}"
115 });
116 }
117 else
118 {
119 api.Messages.Send(new MessagesSendParams()
120 {
121 RandomId = random.Next(),
122 //UserId = update.Message.PeerId,
123 PeerId = update.Message.PeerId,
124 Keyboard = keyboard,
125 Message = $"{p.FirstName}, вы не являетесь администратором"
126 });
127 }
128 break;
129 case "/addadmin":
130 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
131 {
132 api.Messages.Send(new MessagesSendParams()
133 {
134 RandomId = random.Next(),
135 //UserId = update.Message.PeerId,
136 PeerId = update.Message.PeerId,
137 Keyboard = keyboard,
138 Message = $"Для добавления администратора пишите: /addadmin ИдПользователя"
139 });
140 }
141 else
142 {
143 api.Messages.Send(new MessagesSendParams()
144 {
145 RandomId = random.Next(),
146 //UserId = update.Message.PeerId,
147 PeerId = update.Message.PeerId,
148 Keyboard = keyboard,
149 Message = $"{p.FirstName}, вы не являетесь администратором"
150 });
151 }
152 break;
153 case "/kirlox":
154 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
155 {
156 kirloh = !kirloh;
157 api.Messages.Send(new MessagesSendParams()
158 {
159 RandomId = random.Next(),
160 //UserId = update.Message.PeerId,
161 PeerId = update.Message.PeerId,
162 Keyboard = keyboard,
163 Message = $"Значение функции kirlox = {kirloh}"
164 });
165 }
166 else
167 {
168 api.Messages.Send(new MessagesSendParams()
169 {
170 RandomId = random.Next(),
171 //UserId = update.Message.PeerId,
172 PeerId = update.Message.PeerId,
173 Keyboard = keyboard,
174 Message = $"{p.FirstName}, вы не являетесь администратором"
175 });
176 }
177 break;
178 }
179 if (Message.StartsWith("/addadmin "))
180 {
181 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
182 {
183 Message = Message.Replace("/addadmin ", "");
184 try
185 {
186 Convert.ToInt32(Message);
187 AccessIdsList = String.Concat(AccessIdsList, $"{Message}\n");
188
189 api.Messages.Send(new MessagesSendParams()
190 {
191 RandomId = random.Next(),
192 PeerId = update.Message.PeerId,
193 Keyboard = keyboard,
194 Message = $"Список администраторов:\n{AccessIdsList}"
195 });
196 }
197 catch (FormatException)
198 {
199 api.Messages.Send(new MessagesSendParams()
200 {
201 RandomId = random.Next(),
202 PeerId = update.Message.PeerId,
203 Keyboard = keyboard,
204 Message = $"Пожалуйста пишите ид пользователя в цифренном формате"
205 });
206 }
207 }
208 else
209 {
210 api.Messages.Send(new MessagesSendParams()
211 {
212 RandomId = random.Next(),
213 //UserId = update.Message.PeerId,
214 PeerId = update.Message.PeerId,
215 Keyboard = keyboard,
216 Message = $"{p.FirstName}, вы не являетесь администратором"
217 });
218 }
219 }
220 if (Message.StartsWith("/removeadmin "))
221 {
222 if (AccessIdsList.Contains(Convert.ToString(p.Id)))
223 {
224 Message = Message.Replace("/removeadmin ", "");
225 AccessIdsList = AccessIdsList.Replace($"{Message}\n","");
226 //AccessIdsList = String.Concat(AccessIdsList, $"{Message}\n");
227
228 api.Messages.Send(new MessagesSendParams()
229 {
230 RandomId = random.Next(),
231 PeerId = update.Message.PeerId,
232 Keyboard = keyboard,
233 Message = $"Список администраторов:\n{AccessIdsList}"
234 });
235 }
236 else
237 {
238 api.Messages.Send(new MessagesSendParams()
239 {
240 RandomId = random.Next(),
241 //UserId = update.Message.PeerId,
242 PeerId = update.Message.PeerId,
243 Keyboard = keyboard,
244 Message = $"{p.FirstName}, вы не являетесь администратором"
245 });
246 }
247 }
248 }
249 }
250 }
251 catch (LongPollException exception)
252 {
253 if (exception is LongPollOutdateException outdateException)
254 server.Ts = outdateException.Ts;
255 else
256 {
257 server = api.Groups.GetLongPollServer(MyGroupId);
258 }
259 }
260 catch (Exception e)
261 {
262 Console.WriteLine(e.Message);
263 }
264 }
265
266 }
267 }
268}